home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / inter40b.zip / INTERRUP.I < prev    next >
Text File  |  1994-04-03  |  291KB  |  7,994 lines

  1. Interrupt List, part 9 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------D-30---------------------------------
  4. INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
  5.    the CALL 5 entry point does a FAR jump to here
  6. Note:    under DOS 2+, the instruction at PSP:0005 points two bytes too low in
  7.       memory
  8. SeeAlso: INT 21/AH=26h
  9. --------D-31---------------------------------
  10. INT 31 - overwritten by CP/M jump instruction in INT 30
  11. --------v-31---------------------------------
  12. INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
  13. Note:    if one of the Vacsina viruses is resident, the low byte of this
  14.       interrupt still contains the last byte of the INT 30 CP/M JMP
  15.       instruction, but the remaining three bytes are 7Fh 39h followed
  16.       by the Vacsina version number
  17. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
  18. --------E-310000-----------------------------
  19. INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
  20.     AX = 0000h
  21.     CX = number of descriptors to allocate
  22. Return: CF clear if successful
  23.         AX = base selector
  24.     CF set on error
  25.         AX = error code (DPMI 1.0+) (see below)
  26. Notes:    DPMI is the DOS Protected-Mode Interface
  27.     the base and limit of the returned descriptors will be 0, and the type
  28.       will be "data"
  29.     add the value returned by INT 31/AX=0003h to move to subsequent
  30.       descriptors if multiple descriptors were allocated
  31.     not supported by MS Windows 3.0 in Standard mode
  32. SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
  33.  
  34. Values for error code:
  35.  0000h-7FFFh DOS error passed through by DPMI
  36.  8001h    unsupported function
  37.  8002h    object in wrong state for function
  38.  8003h    system integrity would be endangered
  39.  8004h    deadlock detected
  40.  8005h    pending serialization request cancelled
  41.  8010h    out of DPMI internal resources
  42.  8011h    descriptor unavailable
  43.  8012h    linear memory unavailable
  44.  8013h    physical memory unavailable
  45.  8014h    backing store unavailable
  46.  8015h    callback unavailable
  47.  8016h    handle unavailable
  48.  8017h    maximum lock count exceeded
  49.  8018h    shared memory already serialized exclusively by another
  50.  8019h    shared memory already serialized shared by another client
  51.  8021h    invalid value for numeric or flag parameter
  52.  8022h    invalid segment selector
  53.  8023h    invalid handle
  54.  8024h    invalid callback
  55.  8025h    invalid linear address
  56.  8026h    request not supported by hardware
  57. --------E-310001-----------------------------
  58. INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
  59.     AX = 0001h
  60.     BX = selector to free
  61. Return: CF clear if successful
  62.     CF set on error
  63.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  64. Notes:    only one descriptor is freed per call
  65.     the program's initial CS, DS, and SS descriptors may be freed
  66.     (DPMI 1.0+) any segment registers containing the freed selector are
  67.       set to 0000h
  68.     not supported by MS Windows 3.0 in Standard mode
  69. SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
  70. --------E-310002-----------------------------
  71. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
  72.     AX = 0002h
  73.     BX = real mode segment
  74. Return: CF clear if successful
  75.         AX = selector corresponding to real mode segment (64K limit)
  76.     CF set on error
  77.         AX = error code (DPMI 1.0+) (8011h) (see AX=0000h)
  78. Notes:    multiple calls for the same real mode segment return the same selector
  79.     the returned descriptor can never be modified or freed
  80.     not supported by MS Windows 3.0 in Standard mode
  81. --------E-310003-----------------------------
  82. INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
  83.     AX = 0003h
  84. Return: CF clear
  85.         AX = value to add to get next sequential selector
  86. Notes:    the increment will be a power of two
  87.     not supported by MS Windows 3.0 in Standard mode
  88. SeeAlso: AX=0000h
  89. --------E-310004-----------------------------
  90. INT 31 P - DPMI 0.9+ - LOCK SELECTOR
  91.     AX = 0004h
  92.     BX = selector to lock (prevent paging)
  93. Return: ???
  94. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  95.       specification, this function is called by MS Windows TASKMAN,
  96.       PROGMAN, and KERNEL
  97. SeeAlso: AX=0005h,AX=0600h
  98. --------E-310005-----------------------------
  99. INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
  100.     AX = 0005h
  101.     BX = selector to unlock (permit paging)
  102. Return: ???
  103. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  104.       specification, this function is called by MS Windows TASKMAN,
  105.       PROGMAN, and KERNEL
  106. SeeAlso: AX=0004h,AX=0601h
  107. --------E-310006-----------------------------
  108. INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
  109.     AX = 0006h
  110.     BX = selector
  111. Return: CF clear if successful
  112.         CX:DX = linear base address of segment
  113.     CF set on error
  114.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  115. Note:    not supported by MS Windows 3.0 in Standard mode
  116. SeeAlso: AX=0007h,INT 21/AX=3504h
  117. --------E-310007-----------------------------
  118. INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
  119.     AX = 0007h
  120.     BX = selector
  121.     CX:DX = linear base address
  122. Return: CF clear if successful
  123.     CF set on error
  124.         AX = error code (DPMI 1.0+) (8022h,8025h) (see AX=0000h)
  125. Notes:    only modify descriptors allocated with INT 31/AX=0000h
  126.     only the low 24 bits of the address will be used by 16-bit DPMI
  127.       implementations even on a 386 or higher
  128.     DPMI 1.0+ automatically reloads any segment registers containing the
  129.       selector being modified
  130.     not supported by MS Windows 3.0 in Standard mode
  131. SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
  132. SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
  133. --------E-310008-----------------------------
  134. INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
  135.     AX = 0008h
  136.     BX = selector
  137.     CX:DX = segment limit
  138. Return: CF clear if successful
  139.     CF set on error
  140.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  141. Notes:    CX must be zero for 16-bit DPMI implementations
  142.     limits greater than 1MB must be page aligned (low 12 bits set)
  143.     only modify descriptors allocated with INT 31/AX=0000h
  144.     DPMI 1.0+ automatically reloads any segment registers containing the
  145.       selector being modified
  146.     not supported by MS Windows 3.0 in Standard mode
  147. SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
  148. SeeAlso: INT 2C/AX=0003h
  149. --------E-310009-----------------------------
  150. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
  151.     AX = 0009h
  152.     BX = selector
  153.     CL = access rights/type byte
  154.     CH = 80386 extended rights/type byte (32-bit DPMI implementations only)
  155. Return: CF clear if successful
  156.     CF set on error
  157.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  158. Notes:    if the Present bit is clear, CL bits 0-3 may have any value
  159.     DPMI 1.0+ automatically reloads any segment registers containing the
  160.       selector being modified
  161.     not supported by MS Windows 3.0 in Standard mode
  162. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
  163. SeeAlso: INT 2C/AX=0005h
  164. --------E-31000A-----------------------------
  165. INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
  166.     AX = 000Ah
  167.     BX = selector
  168. Return: CF clear if successful
  169.         AX = new data selector
  170.     CF set on error
  171.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  172. Notes:    fails if selector in BX is not a code segment or is invalid
  173.     use INT 31/AX=0001h to free new selector
  174.     future changes to the original selector will not be reflected in the
  175.       returned alias selector
  176.     not supported by MS Windows 3.0 in Standard mode
  177. SeeAlso: AX=0001h
  178. --------E-31000B-----------------------------
  179. INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
  180.     AX = 000Bh
  181.     BX = LDT selector
  182.     ES:(E)DI -> 8-byte buffer for copy of descriptor
  183. Return: CF clear if successful
  184.         buffer filled
  185.     CF set on error
  186.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  187. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  188.     not supported by MS Windows 3.0 in Standard mode
  189. SeeAlso: AX=000Ch
  190. --------E-31000C-----------------------------
  191. INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
  192.     AX = 000Ch
  193.     BX = LDT selector
  194.     ES:(E)DI -> 8-byte buffer containing descriptor
  195. Return: CF clear if successful
  196.     CF set on error
  197.         AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see AX=0000h)
  198. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  199.     only modify descriptors allocated with INT 31/AX=0000h
  200.     DPMI 1.0+ automatically reloads any segment registers containing the
  201.       selector being modified
  202.     not supported by MS Windows 3.0 in Standard mode
  203. SeeAlso: AX=000Bh
  204. --------E-31000D-----------------------------
  205. INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
  206.     AX = 000Dh
  207.     BX = LDT selector
  208. Return: CF clear if successful
  209.         descriptor allocated
  210.     CF set on error
  211.         AX = error code (DPMI 1.0+) (8011h,8022h) (see AX=0000h)
  212. Notes:    free descriptor with INT 31/AX=0001h
  213.     the first 16 descriptors (04h-7Ch) are reserved for this function, but
  214.       some may already be in use by other applications under DPMI 0.9;
  215.       DPMI 1.0 guarantees 16 descriptors per client
  216.     not supported by MS Windows 3.0 in Standard mode
  217. SeeAlso: AX=0000h,AX=0001h
  218. --------E-31000E-----------------------------
  219. INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
  220.     AX = 000Eh
  221.     CX = number of descriptors to copy
  222.     ES:(E)DI -> descriptor buffer (see below)
  223. Return: CF clear if successful
  224.         descriptors copied
  225.     CF set on error
  226.         AX = error code (8022h) (see AX=0000h)
  227.         CX = number of descriptors successfully copied
  228. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  229.     if the function fails, the first CX descriptors are valid; the
  230.       remainder are not modified
  231. SeeAlso: AX=000Bh,AX=000Fh
  232.  
  233. Format of descriptor buffer entry (one per descriptor to get):
  234. Offset    Size    Description
  235.  00h    WORD    selector (set by client)
  236.  02h    QWORD    descriptor (set by host)
  237. --------E-31000F-----------------------------
  238. INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
  239.     AX = 000Fh
  240.     CX = number of descriptors to copy
  241.     ES:(E)DI -> descriptor buffer (see below)
  242. Return: CF clear if successful
  243.         descriptors copied
  244.     CF set on error
  245.         AX = error code (8021h,8022h,8025h) (see AX=0000h)
  246.         CX = number of descriptors successfully copied
  247. Notes:    16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
  248.     if the function fails, the first CX descriptors are valid; the
  249.       remainder are not modified
  250.     DPMI 1.0+ automatically reloads any segment registers containing a
  251.       selector being modified
  252. SeeAlso: AX=000Ch,AX=000Eh
  253.  
  254. Format of descriptor buffer entry (one per descriptor to set):
  255. Offset    Size    Description
  256.  00h    WORD    selector
  257.  02h    QWORD    descriptor
  258. --------E-310100-----------------------------
  259. INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
  260.     AX = 0100h
  261.     BX = number of paragraphs to allocate
  262. Return: CF clear if successful
  263.         AX = real mode segment of allocated block
  264.         DX = first selector for allocated block
  265.     CF set on error
  266.         AX = DOS error code (07h,08h) (see INT 21/AH=59h)
  267.          (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h)
  268.         BX = size (in paragraphs) of largest available block
  269. Notes:    multiple contiguous selectors are allocated for blocks of more than 64K
  270.       if the caller is a 16-bit program
  271.     never modify or deallocate returned descriptors
  272.     not supported by MS Windows 3.0 in Standard mode
  273. SeeAlso: AX=0101h,AX=0501h
  274. --------E-310101-----------------------------
  275. INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
  276.     AX = 0101h
  277.     DX = selector of block
  278. Return: CF set if successful
  279.     CF set on error
  280.         AX = DOS error code (07h,09h) (see INT 21/AH=59h)
  281. Notes:    all descriptors allocated for the block are automatically freed
  282.     DPMI 1.0+ automatically zeros any segment registers containing a
  283.       selector freed by this function
  284.     not supported by MS Windows 3.0 in Standard mode
  285. SeeAlso: AX=0100h,AX=0102h,AX=0502h
  286. --------E-310102-----------------------------
  287. INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
  288.     AX = 0102h
  289.     BX = new block size in paragraphs
  290.     DX = selector of block
  291. Return: CF clear if successful
  292.     CF set on error
  293.         AX = DOS error code (07h,08h,09h) (see INT 21/AH=59h)
  294.          (DPMI 1.0+) DPMI error code (8011h,8022h) (see AX=0000h)
  295.         BX = maximum block size (in paragraphs) possible
  296. Notes:    increasing the size of a block past a 64K boundary will fail if the
  297.       next descriptor in the LDT is already in use
  298.     shrinking a block past a 64K boundary will cause some selectors to be
  299.       freed; DPMI 1.0+ automatically zeros any segment registers containing
  300.       a selector freed by this function
  301.     not supported by MS Windows 3.0 in Standard mode
  302. SeeAlso: AX=0100h
  303. --------E-310200-----------------------------
  304. INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
  305.     AX = 0200h
  306.     BL = interrupt number
  307. Return: CF clear
  308.     CX:DX = segment:offset of real mode interrupt handler
  309. Note:    the DPMI implementation is required to support all 256 vectors
  310. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
  311. --------E-310201-----------------------------
  312. INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
  313.     AX = 0201h
  314.     BL = interrupt number
  315.     CX:DX = segment:offset of real mode handler
  316. Return: CF clear
  317. Note:    all memory that may be touched by a hardware interrupt handler must be
  318.       locked down with INT 31/AX=0600h
  319. SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
  320. --------E-310202-----------------------------
  321. INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
  322.     AX = 0202h
  323.     BL = exception number (00h-1Fh)
  324. Return: CF clear if successful
  325.         CX:(E)DX = selector:offset of handler
  326.     CF set on error
  327.         AX = error code (DPMI 1.0+) (8021h) (see AX=0000h)
  328. Notes:    16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
  329.     DPMI 1.0+ supports this function only for backward compatibility; use
  330.        AX=0210h or AX=0211h instead
  331.     not supported by MS Windows 3.0 in Standard mode
  332. SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
  333. --------E-310203-----------------------------
  334. INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
  335.     AX = 0203h
  336.     BL = exception number (00h-1Fh)
  337.     CX:(E)DX = selector:offset of handler
  338. Return: CF clear if successful
  339.     CF set on error
  340.         AX = error code (DPMI 1.0+) (8021h,8022h) (see AX=0000h)
  341. Notes:    32-bit programs must supply an offset in EDX and use a 32-bit interrupt
  342.       stack frame on chaining to the next exception handler
  343.     the handler should return using a FAR return
  344.     all fault stack frames contain an error code, but it is only valid for
  345.       exceptions 08h and 0Ah-0Eh
  346.     handlers will only be called if the exception occurs in protected mode,
  347.       and the DPMI host does not transparently handle the exception
  348.     the handler may change certain values on the stack frame (see below)
  349.     DPMI 1.0+ supports this function only for backward compatibility; use
  350.        AX=0212h or AX=0213h instead
  351.     not supported by MS Windows 3.0 in Standard mode
  352. SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
  353.  
  354. Format of stack frame for 16-bit programs: (offset from SS:SP)
  355. Offset    Size    Description
  356.  00h    DWORD    return CS:IP (do not change)
  357.  04h    WORD    error code
  358.  06h    DWORD    CS:IP of exception
  359.  0Ah    WORD    flags
  360.  0Ch    DWORD    SS:SP
  361.  
  362. Format of stack frame for 32-bit programs: (offset from SS:ESP)
  363. Offset    Size    Description
  364.  00h    DWORD    return EIP (do not change)
  365.  04h    WORD    return CS selector (do not change)
  366.  06h    WORD    reserved (do not change)
  367.  08h    DWORD    error code
  368.  0Ch    DWORD    EIP of exception
  369.  10h    WORD    CS selector of exception
  370.  12h    WORD    reserved (do not change)
  371.  14h    DWORD    EFLAGS
  372.  18h    DWORD    ESP
  373.  1Ch    WORD    SS
  374.  1Eh    WORD    reserved (do not change)
  375. --------E-310204-----------------------------
  376. INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
  377.     AX = 0204h
  378.     BL = interrupt number
  379. Return: CF clear
  380.     CX:(E)DX = selector:offset of handler
  381. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  382.     DPMI implementations are required to support all 256 vectors
  383.     not supported by MS Windows 3.0 in Standard mode
  384. SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
  385. SeeAlso: INT 2F/AX=FB42h/BX=0024h
  386. --------E-310205-----------------------------
  387. INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
  388.     AX = 0205h
  389.     BL = interrupt number
  390.     CX:(E)DX = selector:offset of handler
  391. Return: CF clear if successful
  392.     CF set on error
  393.         AX = error code (DPMI 1.0+) (8022h) (see AX=0000h)
  394. Notes:    16-bit programs use CX:DX, 32-bit programs use CX:EDX
  395.     32-bit programs must use a 32-bit interrupt stack frame when chaining
  396.       to the next handler
  397.     DPMI implementations are required to support all 256 vectors
  398.     hardware interrupts are reflected to the virtual machine's primary
  399.       client, software interrupts to the current client
  400.     not supported by MS Windows 3.0 in Standard mode
  401. SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
  402. SeeAlso: INT 2F/AX=FB42h/BX=0025h
  403. --------E-310210-----------------------------
  404. INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  405.     AX = 0210h
  406.     BL = exception number (00h-1Fh)
  407. Return: CF clear if successful
  408.         CX:(E)DX = selector:offset of exception handler
  409.     CF set on error
  410.         AX = error code (8021h) (see AX=0000h)
  411. Note:    DPMI host reflects exception to current client's handler
  412. SeeAlso: AX=0202h,AX=0211h,AX=0212h
  413. --------E-310211-----------------------------
  414. INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  415.     AX = 0211h
  416.     BL = exception number (00h-1Fh)
  417. Return: CF clear if successful
  418.         CX:(E)DX = selector:offset of exception handler
  419.     CF set on error
  420.         AX = error code (8021h) (see AX=0000h)
  421. Notes:    returns address of protected-mode handler for real-mode exception
  422.     DPMI host performs a switch to protected mode, reflects the exception
  423.       to the virtual machine's primary client, and returns to real mode
  424.       on the handler's completion
  425. SeeAlso: AX=0202h,AX=0210h,AX=0213h
  426. --------E-310212-----------------------------
  427. INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  428.     AX = 0212h
  429.     BL = exception or fault number (00h-1Fh)
  430.     CX:(E)DX = exception handler selector:offset
  431. Return: CF clear if successful
  432.     CF set on error
  433.         AX = error code (8021h,8022h) (see AX=0000h)
  434. Note:    DPMI host sends exception to current client's handler
  435. SeeAlso: AX=0203h,AX=0210h,AX=0213h
  436. --------E-310213-----------------------------
  437. INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
  438.     AX = 0213h
  439.     BL = exception or fault number (00h-1Fh)
  440.     CX:(E)DX = exception handler selector:offset
  441. Return: CF clear if successful
  442.     CF set on error
  443.         AX = error code (8021h,8022h) (see AX=0000h)
  444. Notes:    specifies address of protected-mode handler for real-mode exception
  445.     DPMI host performs a switch to protected mode, reflects the exception
  446.       to the virtual machine's primary client, and returns to real mode
  447.       on the handler's completion
  448. SeeAlso: AX=0203h,AX=0211h,AX=0212h
  449. --------E-310300-----------------------------
  450. INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
  451.     AX = 0300h
  452.     BL = interrupt number
  453.     BH = flags
  454.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  455.            reserved, must be 0 (DPMI 1.0+)
  456.         others must be 0
  457.     CX = number of words to copy from protected mode to real mode stack
  458.     ES:(E)DI = selector:offset of real mode call structure (see below)
  459. Return: CF clear if successful
  460.         real mode call structure modified (all fields except SS:SP, CS:IP
  461.           filled with return values from real mode interrupt)
  462.     CF set on error
  463.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  464.     protected mode stack unchanged
  465. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  466.     CS:IP in the real mode call structure is ignored for this call,
  467.       instead, the indicated interrupt vector is used for the address
  468.     the flags in the call structure are pushed on the real mode stack to
  469.       form an interrupt stack frame, and the trace and interrupt flags are
  470.       clear on entry to the handler
  471.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  472.     the real mode handler must return with the stack in the same state as
  473.       it was on being called
  474. SeeAlso: AX=0302h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286",INT 2C/AX=0026h
  475. SeeAlso: INT 2F/AX=FB42h/BX=000Dh
  476.  
  477. Format of real mode call structure:
  478. Offset    Size    Description
  479.  00h    DWORD    EDI
  480.  04h    DWORD    ESI
  481.  08h    DWORD    EBP
  482.  0Ch    DWORD    reserved (00h)
  483.  10h    DWORD    EBX
  484.  14h    DWORD    EDX
  485.  18h    DWORD    ECX
  486.  1Ch    DWORD    EAX
  487.  20h    WORD    flags
  488.  22h    WORD    ES
  489.  24h    WORD    DS
  490.  26h    WORD    FS
  491.  28h    WORD    GS
  492.  2Ah    WORD    IP
  493.  2Ch    WORD    CS
  494.  2Eh    WORD    SP
  495.  30h    WORD    SS
  496. --------E-310301-----------------------------
  497. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
  498.     AX = 0301h
  499.     BH = flags
  500.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  501.            reserved, must be 0 (DPMI 1.0+)
  502.         others must be 0
  503.     CX = number of words to copy from protected mode to real mode stack
  504.     ES:(E)DI = selector:offset of real mode call structure
  505.           (see INT 31/AX=0300h)
  506. Return: CF clear if successful
  507.         real mode call structure modified (all fields except SS:SP, CS:IP
  508.           filled with return values from real mode interrupt)
  509.     CF set on error
  510.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  511.     protected mode stack unchanged
  512. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  513.     the real mode procedure must exit with a FAR return
  514.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  515.     the real mode handler must return with the stack in the same state as
  516.       it was on being called
  517. SeeAlso: AX=0300h,AX=0302h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
  518. SeeAlso: INT 2C/AX=0025h
  519. --------E-310302-----------------------------
  520. INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
  521.     AX = 0302h
  522.     BH = flags
  523.         bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
  524.            reserved, must be 0 (DPMI 1.0+)
  525.         others must be 0
  526.     CX = number of words to copy from protected mode to real mode stack
  527.     ES:(E)DI = selector:offset of real mode call structure
  528.           (see INT 31/AX=0300h)
  529. Return: CF clear if successful
  530.         real mode call structure modified (all fields except SS:SP, CS:IP
  531.           filled with return values from real mode interrupt)
  532.     CF set on error
  533.         AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see AX=0000h)
  534.     protected mode stack unchanged
  535. Notes:    16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
  536.     the flags in the call structure are pushed on the real mode stack to
  537.       form an interrupt stack frame, and the trace and interrupt flags are
  538.       clear on entry to the handler
  539.     the real mode procedure must exit with an IRET
  540.     DPMI will provide a small (30 words) real mode stack if SS:SP is zero
  541.     the real mode handler must return with the stack in the same state as
  542.       it was on being called
  543. SeeAlso: AX=0300h
  544. --------E-310303-----------------------------
  545. INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
  546.     AX = 0303h
  547.     DS:(E)SI = selector:offset of procedure to call
  548.     ES:(E)DI = selector:offset of real mode call structure (see AX=0300h)
  549. Return: CF clear if successful
  550.         CX:DX = segment:offset of real mode call address
  551.     CF set on error
  552.         AX = error code (DPMI 1.0+) (8015h) (see AX=0000h)
  553. Notes:    the real mode call structure is static, causing reentrancy problems;
  554.       its contents are only valid at the time of a callback
  555.     the called procedure must modify the real mode CS:IP before returning
  556.     values are returned to real mode by modifying the real mode call struc
  557.     DPMI hosts must provide at least 16 callbacks per client
  558.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  559.       not support this function
  560. SeeAlso: AX=0304h,AX=0C00h
  561.  
  562. Values callback procedure is called with:
  563.     DS:(E)SI = selector:offset of real mode SS:SP
  564.     ES:(E)DI = selector:offset of real mode call structure
  565.     SS:(E)SP = locked protected mode API stack
  566.     interrupts disabled
  567. Return: (with IRET)
  568.     ES:(E)DI = selector:offset of real mode call structure to restore
  569. --------E-310304-----------------------------
  570. INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
  571.     AX = 0304h
  572.     CX:DX = real mode callback address
  573. Return: CF clear if successful
  574.     CF set on error
  575.         AX = error code (DPMI 1.0+) (8024h) (see AX=0000h)
  576. Note:    the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
  577.       not support this function
  578. SeeAlso: AX=0303h
  579. --------E-310305-----------------------------
  580. INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
  581.     AX = 0305h
  582. Return: CF clear
  583.     AX = size in bytes of state buffer
  584.     BX:CX = real mode address of procedure to save/restore state
  585.     SI:(E)DI = protected mode procedure to save/restore state
  586. Notes:    the buffer size will be zero if it is not necessary to preserve state
  587.     16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
  588.     this function is only needed if using the raw mode switch service
  589. SeeAlso: AX=0306h
  590.  
  591. Values to call state-save procedures with:
  592.     AL = direction
  593.         00h save state
  594.         01h restore state
  595.     ES:(E)DI -> state buffer
  596. Return: all registers preserved
  597. --------E-310306-----------------------------
  598. INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
  599.     AX = 0306h
  600. Return: CF clear
  601.     BX:CX -> procedure to switch from real to protected mode
  602.     SI:(E)DI -> procedure to switch from protected to real mode
  603. Notes:    16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
  604.     the caller must save and restore the state of the task with AX=0305h
  605.     not supported by MS Windows 3.0 in Standard mode
  606. SeeAlso: AX=0305h
  607.  
  608. Values to JUMP at mode-switch procedures with:
  609.     AX = new DS
  610.     CX = new ES
  611.     DX = new SS
  612.     (E)BX = new (E)SP
  613.     SI:(E)DI = new CS:(E)IP
  614. Notes:    BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
  615.       DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
  616.     interrupts will stay disabled during the entire mode switch if they
  617.       are disabled on entry to the mode-switch procedure
  618. --------E-310400-----------------------------
  619. INT 31 P - DPMI 0.9+ - GET DPMI VERSION
  620.     AX = 0400h
  621. Return: CF clear
  622.     AH = major version of DPMI spec supported
  623.     AL = two-digit minor version of DPMI spec supported
  624.     BX = DPMI host flags (see below)
  625.     CL = processor type (02h=80286, 03h=80386, 04h=80486)
  626.     DH = curr value of virtual master interrupt controller base interrupt
  627.     DL = curr value of virtual slave interrupt controller base interrupt
  628. BUG:    Windows NT versions from the March 1993 beta to at least the Final
  629.       release with fixes to CSD002 report version 0090h (0.144)
  630. SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 67/AX=DE0Ah
  631.  
  632. Bitfields for DPMI host flags:
  633. Bit(s)    Description
  634.  0    running under an 80386 (32-bit) implementation
  635.  1    processor returns to real mode for reflected interrupts instead of V86
  636.       mode
  637.  2    virtual memory supported
  638.  3    reserved (undefined)
  639.  4-15    reserved (zero)
  640. --------E-310401-----------------------------
  641. INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
  642.     AX = 0401h
  643.     ES:(E)DI -> 128-byte buffer for host description (see below)
  644. Return: CF clear if successful
  645.         AX = capabilities (see below)
  646.         CX = reserved (00h)
  647.         DX = reserved (00h)
  648.         buffer filled
  649.     CF set on error (DPMI 0.9 only)
  650. SeeAlso: AX=0400h
  651.  
  652. Bitfields for capabilities:
  653. Bit(s)    Description
  654.  0    paged accessed/dirty supported (see AX=0506h,AX=0507h)
  655.  1    exceptions restartability supported
  656.  2    device mapping supported (see AX=0508h)
  657.  3    conventional memory mapping supported (see AX=0509h)
  658.  4    demand zero-fill supported
  659.  5    write-protect client capability supported
  660.  6    write-protect host capability supported
  661.  7-15    reserved
  662.  
  663. Format of host description:
  664. Offset    Size    Description
  665.  00h    BYTE    host major version number
  666.  01h    BYTE    host minor version number
  667.  02h 126 BYTEs    ASCIZ host vendor name
  668. --------E-310500-----------------------------
  669. INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
  670.     AX = 0500h
  671.     ES:(E)DI -> buffer for memory information (see below)
  672. Return: CF clear
  673. Notes:    16-bit programs use ES:DI, 32-bit programs use ES:EDI
  674.     this function must be considered advisory because other applications
  675.       may affect the results at any time after the call
  676.     fields not supported by the DPMI implementation are filled with
  677.       FFFFFFFFh
  678.     DPMI 1.0+ supports this function solely for backward compatibility; use
  679.       AX=050Bh instead
  680.     the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
  681.       returns the first field in the memory information record
  682. SeeAlso: AX=0501h,AX=0604h
  683.  
  684. Format of memory information:
  685. Offset    Size    Description
  686.  00h    DWORD    largest available block in bytes
  687.  04h    DWORD    maximum unlocked page allocation
  688.  08h    DWORD    maximum locked page allocation
  689.  0Ch    DWORD    total linear address space in pages
  690.  10h    DWORD    total unlocked pages
  691.  14h    DWORD    free pages
  692.  18h    DWORD    total physical pages
  693.  1Ch    DWORD    free linear address space in pages
  694.  20h    DWORD    size of paging file/partition in pages
  695.  24h 12 BYTEs    reserved
  696. --------E-310501-----------------------------
  697. INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
  698.     AX = 0501h
  699.     BX:CX = size in bytes
  700. Return: CF clear if successful
  701.         BX:CX = linear address of block
  702.         SI:DI = memory block handle for resizing and freeing block
  703.     CF set on error
  704.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see AX=0000h)
  705. Notes:    no selectors are allocated
  706.     the memory block is allocated unlocked (can be locked with AX=0600h)
  707.     allocations are often page granular (see AX=0604h)
  708.     under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
  709.       for this function to fail even if AX=0500h indicates that enough
  710.       memory is available
  711. SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
  712. SeeAlso: INT 2F/AX=FB42h/BX=0002h
  713. --------E-310502-----------------------------
  714. INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
  715.     AX = 0502h
  716.     SI:DI = handle of memory block
  717. Return: CF clear if successful
  718.     CF set on error
  719.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  720. Note:    any selectors allocated for the memory block must also be freed,
  721.       preferably before freeing the memory block
  722. SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
  723. --------E-310503-----------------------------
  724. INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
  725.     AX = 0503h
  726.     BX:CX = new size in bytes (nonzero)
  727.     SI:DI = handle of memory block
  728. Return: CF clear if successful
  729.         BX:CX = new linear address
  730.         SI:DI = new handle of memory block
  731.     CF set on error
  732.         AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
  733.         (see AX=0000h)
  734. Notes:    any selectors pointing at the block must be updated
  735.     the previous memory block handle becomes invalid
  736.     an error is returned if the new size is 0
  737. SeeAlso: AX=0102h,AX=0501h,AX=0505h
  738. --------E-310504-----------------------------
  739. INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
  740.     AX = 0504h
  741.     EBX = page-aligned linear address of memory block (00000000h if any
  742.         address is acceptable)
  743.     ECX = size in bytes (nonzero)
  744.     EDX = flags
  745.         bit 0: set to create committed pages instead of uncommitted pages
  746.         bits 1-31 reserved (0)
  747. Return: CF clear if successful
  748.         EBX = linear address of memory block
  749.         ESI = memory block handle
  750.     CF set on error
  751.         AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see AX=0000h)
  752. Note:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  753. SeeAlso: AX=0501h,AX=0505h
  754. --------E-310505-----------------------------
  755. INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
  756.     AX = 0505h
  757.     ESI = memory block handle
  758.     ECX = new size in bytes (nonzero)
  759.     EDX = flags
  760.         bit 0: create committed pages rather than uncommitted pages
  761.         bit 1: segment descriptor update required
  762.         ES:EBX -> buffer containing array of WORDs with selectors
  763.         EDI = number of selectors in array
  764.         bits 2-31 reserved (0)
  765. Return: CF clear if successful
  766.         EBX = new linear base address
  767.         ESI = new memory block handle
  768.     CF set on error
  769.         AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see AX=0000h)
  770. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  771.     the old memory block handle becomes invalid
  772.     if EDX bit 1 set and the block's base address is changed, DPMI updates
  773.       all descriptors for selectors in the update buffer which fall within
  774.       the memory block
  775. SeeAlso: AX=0503h,AX=0504h
  776. --------E-310506-----------------------------
  777. INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
  778.     AX = 0506h
  779.     ESI = memory block handle
  780.     EBX = offset in memory block of first page
  781.     ECX = number of pages
  782.     ES:EDX -> array of WORDs to hold page attributes (see below)
  783. Return: CF clear if successful
  784.         buffer filled
  785.     CF set on error
  786.         AX = error code (8001h,8023h,8025h) (see AX=0000h)
  787. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  788.     if EBX is not page-aligned, it will be rounded down
  789. SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
  790.  
  791. Bitfields for page attribute word:
  792. Bit(s)    Description
  793.  0-2    page type
  794.     000 uncommitted
  795.     001 committed
  796.     010 mapped (see AX=0508h,AX=0509h)
  797.     other currently unused
  798.  3    page is read/write rather than read-only
  799.  4    accessed/dirty bits supplied in bits 5 and 6
  800.  5    page has been accessed (only valid if bit 4 set)
  801.  6    page has been written (only valid if bit 4 set)
  802.  7-15    reserved (0)
  803. --------E-310507-----------------------------
  804. INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
  805.     AX = 0507h
  806.     ESI = memory block handle
  807.     EBX = offset in memory block of first page
  808.     ECX = number of pages
  809.     ES:EDX -> array of WORDs with new page attributes (see AX=0506h)
  810. Return: CF clear if successful
  811.     CF set on error
  812.         AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
  813.         (see AX=0000h)
  814.         ECX = number of pages which have been set
  815. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  816.     if EBX is not page-aligned, it will be rounded down
  817. SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
  818. --------E-310508-----------------------------
  819. INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
  820.     AX = 0508h
  821.     ESI = memory block handle
  822.     EBX = page-aligned offset within memory block of page(s) to be mapped
  823.     ECX = number of pages to map
  824.     EDX = page-aligned physical address of device
  825. Return: CF clear if successful
  826.     CF set on error
  827.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  828. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  829.     support of this function is optional; hosts are also allowed to support
  830.       the function for some devices but not others
  831. SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
  832. --------E-310509-----------------------------
  833. INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
  834.     AX = 0509h
  835.     ESI = memory block handle
  836.     EBX = page-aligned offset within memory block of page(s) to map
  837.     ECX = number of pages to map
  838.     EDX = page-aligned linear address of conventional (below 1M) memory
  839. Return: CF clear if successful
  840.     CF set on error
  841.         AX = error code (8001h,8003h,8023h,8025h) (see AX=0000h)
  842. Notes:    only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
  843.     support of this function is optional
  844. SeeAlso: AX=0504h,AX=0508h,AX=0801h
  845. --------E-31050A-----------------------------
  846. INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
  847.     AX = 050AH
  848.     SI:DI = memory block handle
  849. Return: CF clear if successful
  850.         SI:DI = size in bytes
  851.         BX:CX = base address
  852.     CF set on error
  853.         AX = error code (8023h) (see AX=0000h)
  854. SeeAlso: AX=0501h,AX=0504h
  855. --------E-31050B-----------------------------
  856. INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
  857.     AX = 050Bh
  858.     ES:(E)DI -> 128-byte buffer for memory information (see below)
  859. Return: CF clear if successful
  860.     CF set on error (DPMI 0.9 only)
  861. Note:    16-bit programs use ES:DI, 32-bit programs must use ES:EDI
  862. SeeAlso: AX=0500h
  863.  
  864. Format of memory information:
  865. Offset    Size    Description
  866.  00h    DWORD    total allocated bytes of physical memory controlled by host
  867.  04h    DWORD    total allocated bytes of virtual memory controlled by host
  868.  08h    DWORD    total available bytes of virtual memory controlled by host
  869.  0Ch    DWORD    total allocated bytes of virtual memory for curr virtual mach
  870.  10h    DWORD    total available bytes of virtual memory for curr virtual mach
  871.  14h    DWORD    total allocated bytes of virtual memory for current client
  872.  18h    DWORD    total available bytes of virtual memory for current client
  873.  1Ch    DWORD    total locked bytes for current client
  874.  20h    DWORD    maximum locked bytes for current client
  875.  24h    DWORD    highest linear address available to current client
  876.  28h    DWORD    largest available memory block in bytes
  877.  2Ch    DWORD    minimum allocation unit in bytes
  878.  30h    DWORD    allocation alignment unit size in bytes
  879.  34h 76 BYTEs    reserved (00h)
  880. --------E-310600-----------------------------
  881. INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
  882.     AX = 0600h
  883.     BX:CX = starting linear address
  884.     SI:DI = size of region in bytes
  885. Return: CF clear if successful
  886.     CF set on error
  887.         none of the memory is locked
  888.         AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see AX=0000h)
  889. Notes:    pages at beginning and end will be locked if the region overlaps them
  890.     may be called multiple times for a given page; the DPMI host keeps a
  891.       lock count for each page
  892. SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
  893. --------E-310601-----------------------------
  894. INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
  895.     AX = 0601h
  896.     BX:CX = starting linear address
  897.     SI:DI = size of region in bytes
  898. Return: CF clear if successful
  899.     CF set on error
  900.         none of the memory is unlocked
  901.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  902. Notes:    pages at beginning and end will be unlocked if the region overlaps them
  903.     memory whose lock count has not reached zero remains locked
  904. SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
  905. --------E-310602-----------------------------
  906. INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
  907.     AX = 0602h
  908.     BX:CX = starting linear address
  909.     SI:DI = size of region in bytes
  910. Return: CF clear if successful
  911.     CF set on error
  912.         none of the memory is made pageable
  913.         AX = error code (DPMI 1.0+) (8002h,8025h) (see AX=0000h)
  914. Notes:    must relock all unlocked real mode memory before terminating process
  915.       for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
  916.     pages at beginning and end will be unlocked if the region overlaps them
  917.     pageability of real mode pages is binary, not a count
  918. SeeAlso: AX=0600h,AX=0603h
  919. --------E-310603-----------------------------
  920. INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
  921.     AX = 0603h
  922.     BX:CX = starting linear address
  923.     SI:DI = size of region in bytes
  924. Return: CF clear if successful
  925.     CF set on error
  926.         none of the memory is relocked
  927.         AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see AX=0000h)
  928. Notes:    pages at beginning and end will be relocked if the region overlaps them
  929.     pageability of real mode pages is binary, not a count
  930. SeeAlso: AX=0602h
  931. --------E-310604-----------------------------
  932. INT 31 P - DPMI 0.9+ - GET PAGE SIZE
  933.     AX = 0604h
  934. Return: CF clear if successful
  935.         BX:CX = page size in bytes
  936.     CF set on error
  937.         AX = error code (DPMI 1.0+)
  938.         8001h unsupported, 16-bit host
  939. BUG:    the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
  940.       unchanged
  941. --------E-310700-----------------------------
  942. INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
  943.     AX = 0700h
  944.     BX:CX = starting linear page number
  945.     SI:DI = number of pages to mark as paging candidates
  946. Return: ???
  947. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  948.       specification, this function is called by MS Windows TASKMAN,
  949.       PROGMAN, and KERNEL
  950. SeeAlso: AX=0701h,AX=0702h
  951. --------E-310701-----------------------------
  952. INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
  953.     AX = 0701h
  954.     BX:CX = starting linear page number
  955.     SI:DI = number of pages to discard
  956. Return: ???
  957. Note:    although marked as reserved in versions 0.9 and 1.0 of the DPMI
  958.       specification, this function is called by MS Windows TASKMAN,
  959.       PROGMAN, and KERNEL
  960. SeeAlso: AX=0700h,AX=0703h
  961. --------E-310702-----------------------------
  962. INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
  963.     AX = 0702h
  964.     BX:CX = starting linear address
  965.     SI:DI = number of bytes to mark as paging candidates
  966. Return: CF clear if successful
  967.     CF set on error
  968.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  969. Notes:    this function is advisory, and does not force immediate paging
  970.     partial pages will not be discarded
  971. SeeAlso: AX=0700h,AX=0703h
  972. --------E-310703-----------------------------
  973. INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
  974.     AX = 0703h
  975.     BX:CX = starting linear address
  976.     SI:DI = number of bytes to mark as discarded
  977. Return: CF clear if successful
  978.     CF set on error
  979.         AX = error code (DPMI 1.0+) (8025h) (see AX=0000h)
  980. Notes:    this function is advisory, and may be ignored by DPMI implementations
  981.     partial pages will not be discarded
  982. SeeAlso: AX=0701h,AX=0702h
  983. --------E-310800-----------------------------
  984. INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
  985.     AX = 0800h
  986.     BX:CX = physical address (should be above 1 MB)
  987.     SI:DI = size in bytes
  988. Return: CF clear if successful
  989.         BX:CX = linear address which maps the requested physical memory
  990.     CF set on error
  991.         AX = error code (DPMI 1.0+) (8003h,8021h) (see AX=0000h)
  992. Notes:    implementations may refuse this call because it can circumvent protects
  993.     the caller must build an appropriate selector for the memory
  994.     do not use for memory mapped in the first megabyte
  995. SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
  996. --------E-310801-----------------------------
  997. INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
  998.     AX = 0801h
  999.     BX:CX = linear address returned by AX=0800h
  1000. Return: CF clear if successful
  1001.     CF set on error
  1002.         AX = error code (8025h) (see AX=0000h)
  1003. Note:    should be called at end of access to device mapped with AX=0800h
  1004. SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
  1005. --------E-310900-----------------------------
  1006. INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
  1007.     AX = 0900h
  1008. Return: CF clear
  1009.     virtual interrupts disabled
  1010.     AL = 00h if previously disabled
  1011.        = 01h if previously enabled
  1012.     AH preserved
  1013. Notes:    the previous state may be restored simply by executing another INT 31
  1014.     a CLI instruction may be used if the previous state is unimportant,
  1015.       but should be assumed to be very slow due to trapping by the host
  1016. SeeAlso: AX=0901h,AX=0902h
  1017. --------E-310901-----------------------------
  1018. INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
  1019.     AX = 0901h
  1020. Return: CF clear
  1021.     virtual interrupts enabled
  1022.     AL = 00h if previously disabled
  1023.        = 01h if previously enabled
  1024.     AH preserved
  1025. Notes:    the previous state may be restored simply by executing another INT 31
  1026.     a STI instruction may be used if the previous state is unimportant,
  1027.       but should be assumed to be very slow due to trapping by the host
  1028. SeeAlso: AX=0900h,AX=0902h
  1029. --------E-310902-----------------------------
  1030. INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
  1031.     AX = 0902h
  1032. Return: CF clear
  1033.     AL = 00h if disabled
  1034.        = 01h if enabled
  1035. Note:    should be used rather than PUSHF because that instruction yields the
  1036.       physical interrupt state rather than the per-client virtualized
  1037.       interrupt flag
  1038. SeeAlso: AX=0900h,AX=0901h
  1039. --------E-310A00-----------------------------
  1040. INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
  1041.     AX = 0A00h
  1042.     DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
  1043. Return: CF clear if successful
  1044.         ES:(E)DI -> FAR extended API entry point
  1045.         DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
  1046.     CF set on error
  1047.         AX = error code (DPMI 1.0+) (8001h) (see AX=0000h)
  1048. Notes:    extended API parameters are vendor-specific
  1049.     DPMI 1.0+ supports this function solely for backward compatibility; use
  1050.       INT 2F/AX=168Ah instead
  1051.     this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
  1052.       or QDPMI v1.0x; use INT 2F/AX=168Ah instead.    It is supported by
  1053.       386MAX v7.01.
  1054. SeeAlso: INT 2F/AX=168Ah
  1055. --------E-310B00-----------------------------
  1056. INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
  1057.     AX = 0B00h
  1058.     BX:CX = linear address
  1059.     DL = size (1,2,4 bytes)
  1060.     DH = type (00h execute, 01h write, 02h read/write)
  1061. Return: CF clear if successful
  1062.         BX = watchpoint handle
  1063.     CF set on error
  1064.         AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see AX=0000h)
  1065. SeeAlso: AX=0212h,AX=0601h
  1066. --------E-310B01-----------------------------
  1067. INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
  1068.     AX = 0B01h
  1069.     BX = watchpoint handle
  1070. Return: CF clear if successful
  1071.     CF set on error
  1072.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1073. Note:    the watchpoint handle is freed
  1074. SeeAlso: AX=0B00h
  1075. --------E-310B02-----------------------------
  1076. INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
  1077.     AX = 0B02h
  1078.     BX = watchpoint handle
  1079. Return: CF clear if successful
  1080.         AX = status flags
  1081.         bit 0: watch point has been executed since AX=0B00h or AX=0B03h
  1082.     CF set on error
  1083.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1084. SeeAlso: AX=0B00h,AX=0B03h
  1085. --------E-310B03-----------------------------
  1086. INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
  1087.     AX = 0B03h
  1088.     BX = watchpoint handle
  1089. Return: CF clear if successful
  1090.     CF set on error
  1091.         AX = error code (DPMI 1.0+) (8023h) (see AX=0000h)
  1092. SeeAlso: AX=0B02h
  1093. --------E-310C00-----------------------------
  1094. INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
  1095.     AX = 0C00h
  1096.     ES:(E)DI -> resident service provider structure (see below)
  1097. Return: CF clear if successful
  1098.     CF set on error
  1099.         AX = error code (8015h,8021h,8025h) (see AX=0000h)
  1100. Note:    calling this function declares an intent to provide resident
  1101.       protected mode services after terminating with AX=0C01h
  1102. SeeAlso: AX=0303h,AX=0C01h
  1103.  
  1104. Format of resident service provider structure:
  1105. Offset    Size    Description
  1106.  00h    QWORD    descriptor for 16-bit data segment
  1107.  08h    QWORD    descriptor for 16-bit code segment (zeros if not supported)
  1108.  10h    WORD    offset of 16-bit callback procedure
  1109.  12h  2 BYTEs    reserved
  1110.  14h    QWORD    descriptor for 32-bit data segment
  1111.  1Ch    QWORD    descriptor for 32-bit code segment (zeros if not supported)
  1112.  24h    DWORD    offset of 32-bit callback procedure
  1113. --------E-310C01-----------------------------
  1114. INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
  1115.     AX = 0C01h
  1116.     BL = return code
  1117.     DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
  1118. Return: never
  1119. Notes:    should only be used if the program will only provide services to
  1120.       other DPMI programs
  1121.     any protected mode memory remains allocated to the program unless
  1122.       explicitly freed before this call
  1123.     must first call AX=0C00h or program will simply be terminated
  1124. SeeAlso: AX=0C00h,INT 21/AH=31h
  1125. --------E-310D00-----------------------------
  1126. INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
  1127.     AX = 0D00h
  1128.     ES:(E)DI -> shared memory allocation request structure (see below)
  1129. Return: CF clear if successful
  1130.         request structure updated
  1131.     CF set on error
  1132.         AX = error code (8012h,8013h,8014h,8016h,8021h) (see AX=0000h)
  1133. Note:    first 16 bytes of memory block will be initialized to zeros on the
  1134.       first allocation
  1135. SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
  1136.  
  1137. Format of shared memory allocation request structure:
  1138. Offset    Size    Description
  1139.  00h    DWORD    requested length of shared memory block in bytes
  1140.  04h    DWORD    (return) allocated length of block
  1141.  08h    DWORD    (return) shared memory handle
  1142.  0Ch    DWORD    (return) linear address of memory block
  1143.  10h    PWORD    selector:offset32 of ASCIZ name for memory block
  1144.         (name max 128 bytes)
  1145.  16h  2 BYTEs    reserved
  1146.  18h  4 BYTEs    reserved (00h)
  1147. --------E-310D01-----------------------------
  1148. INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
  1149.     AX = 0D01h
  1150.     SI:DI = shared memory block handle
  1151. Return: CF clear if successful
  1152.     CF set on error
  1153.         AX = error code (8023h) (see AX=0000h)
  1154. Notes:    handle becomes invalid after this call
  1155.     DPMI maintains separate global and virtual machine use counts for each
  1156.       shared memory block; when the global use counts reaches zero, the
  1157.       block is finally destroyed
  1158. SeeAlso: AX=0502h,AX=0D00h
  1159. --------E-310D02-----------------------------
  1160. INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
  1161.     AX = 0D02h
  1162.     SI:DI = shared memory block handle
  1163.     DX = flags
  1164.         bit 0: return immediately rather than suspending if serialization
  1165.             unavailable
  1166.         bit 1: shared rather than exclusive serialization
  1167.         bits 2-15 reserved (0)
  1168. Return: CF clear if successful
  1169.     CF set on error
  1170.         AX = error code (8004h,8005h,8017h-8019h,8023h) (see AX=0000h)
  1171. Notes:    an exclusive serialization blocks any other serialization attempts for
  1172.       the same block by another virtual machine; a shared serialization
  1173.       blocks attempts at exclusive serialization by another virtual machine
  1174.     hosts are not required to detect deadlock
  1175.     a client's interrupt handler can cancel a serialization call which
  1176.       caused it to block by calling AX=0D03h
  1177. SeeAlso: AX=0D00h,AX=0D03h
  1178. --------E-310D03-----------------------------
  1179. INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
  1180.     AX = 0D03h
  1181.     SI:DI = shared memory block handle
  1182.     DX = flags
  1183.         bit 0: release shared serialization rather than exclusive serialztn
  1184.         bit 1: free pending serialization
  1185.         bits 2-15 reserved (0)
  1186. Return: CF clear if successful
  1187.     CF set on error
  1188.         AX = error code (8002h,8023h) (see AX=0000h)
  1189. SeeAlso: AX=0D00h,AX=0D02h
  1190. --------E-310E00-----------------------------
  1191. INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
  1192.     AX = 0E00h
  1193. Return: CF clear
  1194.     AX = coprocessor status (see below)
  1195. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1196. SeeAlso: AX=0E01h
  1197.  
  1198. Bitfields for coprocessor status:
  1199. Bit(s)    Description
  1200.  0    numeric coprocessor enabled for current client
  1201.  1    client is emulating coprocessor
  1202.  2    numeric coprocessor is present
  1203.  3    host is emulating coprocessor instructions
  1204.  4-7    coprocessor type
  1205.     0000 none
  1206.     0010 80287
  1207.     0011 80387
  1208.     0100 80486 with numeric coprocessor
  1209.     other reserved
  1210.  8-15    not used
  1211. --------E-310E01-----------------------------
  1212. INT 31 P - DPMI 1.0+ - SET EMULATION
  1213.     AX = 0E01h
  1214.     BX = coprocessor flag bits
  1215.         bit 0: enable numeric coprocessor for current client
  1216.         bit 1: client will emulate coprocessor
  1217.         bits 2-15 not used
  1218. Return: CF clear if successful
  1219.     CF set on error
  1220.         AX = error code (8026h) (see AX=0000h)
  1221. Note:    supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
  1222. SeeAlso: AX=0E00h
  1223. --------E-3157-------------------------------
  1224. INT 31 - Netroom3 DPMI.EXE v3.00 - ???
  1225.     AH = 57h
  1226.     AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
  1227.     ???
  1228. Return: ???
  1229. SeeAlso: INT 2C/AX=0000h"RM386"
  1230. --------E-315702-----------------------------
  1231. INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
  1232.     AX = 5702h
  1233.     DX = PSP segment of caller
  1234.     STACK: WORD    ???
  1235.            WORD    flags (bit 0 set if 32-bit program)
  1236. Return: as for DPMI mode-switch entry point (see INT 2F/AX=1687h)
  1237. Note:    this function is called by the real-mode DPMI mode-switch entry point
  1238. SeeAlso: INT 2F/AX=1687h
  1239. --------v-32---------------------------------
  1240. INT 32 - VIRUS - reportedly used by "Tiny" Viruses
  1241. SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
  1242. --------v-32---------------------------------
  1243. INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
  1244. SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
  1245. --------M-330000-----------------------------
  1246. INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
  1247.     AX = 0000h
  1248. Return: AX = status
  1249.         0000h hardware/driver not installed
  1250.         FFFFh hardware/driver installed
  1251.     BX = number of buttons
  1252.         0000h other than two
  1253.         0002h two buttons (many drivers)
  1254.         0003h Mouse Systems/Logitech three-button mouse
  1255.         FFFFh two buttons
  1256. Notes:    to use mouse on a Hercules-compatible monographics card in graphics
  1257.       mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
  1258.       and then call this function.    Logitech drivers v5.01 and v6.00
  1259.       reportedly do not correctly use Hercules graphics in dual-monitor
  1260.       systems, while version 4.10 does.
  1261.     the Logitech mouse driver contains the signature string "LOGITECH"
  1262.       three bytes past the interrupt handler; many of the Logitech mouse
  1263.       utilities check for this signature.
  1264. SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
  1265. --------M-330001-----------------------------
  1266. INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
  1267.     AX = 0001h
  1268. SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh
  1269. --------M-330002-----------------------------
  1270. INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
  1271.     AX = 0002h
  1272. Note:    multiple calls to hide the cursor will require multiple calls to
  1273.       function 01h to unhide it.
  1274. SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
  1275. --------M-330003-----------------------------
  1276. INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
  1277.     AX = 0003h
  1278. Return: BX = button status
  1279.        bit 0  left button pressed if 1
  1280.        bit 1  right button pressed if 1
  1281.        bit 2  middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1282.     CX = column
  1283.     DX = row
  1284. Note:    in text modes, all coordinates are specified as multiples of the cell
  1285.       size, typically 8x8 pixels
  1286. SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
  1287. --------M-330004-----------------------------
  1288. INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
  1289.     AX = 0004h
  1290.     CX = column
  1291.     DX = row
  1292. Note:    the row and column are truncated to the next lower multiple of the cell
  1293.       size (typically 8x8 in text modes); however, some versions of the
  1294.       Microsoft documentation incorrectly state that the coordinates are
  1295.       rounded
  1296. SeeAlso: AX=0003h,INT 62/AX=0081h
  1297. --------M-330005-----------------------------
  1298. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
  1299.     AX = 0005h
  1300.     BX = button
  1301.         0000h left
  1302.         0001h right
  1303.         0002h middle (Mouse Systems/Logitech/Genius mouse)
  1304. Return: AX = button states
  1305.         bit 0 left button pressed if 1
  1306.         bit 1 right button pressed if 1
  1307.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1308.     BX = number of times specified button has been pressed since last call
  1309.     CX = column at time specified button was last pressed
  1310.     DX = row at time specified button was last pressed
  1311. Note:    at least for the Genius mouse driver, the number of button presses
  1312.       returned is limited to 7FFFh
  1313. SeeAlso: AX=0006h,INT 62/AX=007Ch
  1314. --------M-330006-----------------------------
  1315. INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
  1316.     AX = 0006h
  1317.     BX = button
  1318.         0000h left
  1319.         0001h right
  1320.         0002h middle (Mouse Systems/Logitech/Genius mouse)
  1321. Return: AX = button states
  1322.         bit 0 left button pressed if 1
  1323.         bit 1 right button pressed if 1
  1324.         bit 2 middle button pressed if 1 (Mouse Systems/Logitech/Genius)
  1325.     BX = number of times specified button has been released since last call
  1326.     CX = column at time specified button was last released
  1327.     DX = row at time specified button was last released
  1328. Note:    at least for the Genius mouse driver, the number of button releases
  1329.       returned is limited to 7FFFh
  1330. SeeAlso: AX=0005h,INT 62/AX=007Ch
  1331. --------M-330007-----------------------------
  1332. INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
  1333.     AX = 0007h
  1334.     CX = minimum column
  1335.     DX = maximum column
  1336. Note:    in text modes, the minimum and maximum columns are truncated to the
  1337.       next lower multiple of the cell size, typically 8x8 pixels
  1338. SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1339. --------M-330008-----------------------------
  1340. INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
  1341.     AX = 0008h
  1342.     CX = minimum row
  1343.     DX = maximum row
  1344. Note:    in text modes, the minimum and maximum rows are truncated to the
  1345.       next lower multiple of the cell size, typically 8x8 pixels
  1346. SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
  1347. --------M-330009-----------------------------
  1348. INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
  1349.     AX = 0009h
  1350.     BX = column of cursor hot spot in bitmap (-16 to 16)
  1351.     CX = row of cursor hot spot (-16 to 16)
  1352.     ES:DX -> bitmap
  1353.         16 words screen mask
  1354.         16 words cursor mask
  1355.             each word defines the sixteen pixels of a row, low bit
  1356.               rightmost
  1357. Notes:    in graphics modes, the screen contents around the current mouse cursor
  1358.       position are ANDed with the screen mask and then XORed with the
  1359.       cursor mask
  1360.     the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
  1361.       hot spot row/column should be limited to -128..127
  1362.     Microsoft KnowledgeBase article Q19850 states that the high bit is
  1363.       right-most, but that statement is contradicted by all other available
  1364.       documentation
  1365. SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh
  1366. --------M-33000A-----------------------------
  1367. INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
  1368.     AX = 000Ah
  1369.     BX = hardware/software text cursor
  1370.         0000h software
  1371.         CX = screen mask
  1372.         DX = cursor mask
  1373.         0001h hardware
  1374.         CX = start scan line
  1375.         DX = end scan line
  1376. Note:    when the software cursor is selected, the character/attribute data at
  1377.       the current screen position is ANDed with the screen mask and then
  1378.       XORed with the cursor mask
  1379. SeeAlso: AX=0009h,INT 62/AX=007Eh
  1380. --------M-33000B-----------------------------
  1381. INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
  1382.     AX = 000Bh
  1383. Return: CX = number of mickeys mouse moved horizontally since last call
  1384.     DX = number of mickeys mouse moved vertically
  1385. Notes:    a mickey is the smallest increment the mouse can sense
  1386.     positive values indicate down/right
  1387. SeeAlso: AX=0003h,AX=001Bh,AX=0027h
  1388. --------M-33000C-----------------------------
  1389. INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
  1390.     AX = 000Ch
  1391.     CX = call mask (see below)
  1392.     ES:DX -> FAR routine
  1393. SeeAlso: AX=0018h
  1394.  
  1395. Bitfields for call mask:
  1396. Bit(s)    Description
  1397.  0    call if mouse moves
  1398.  1    call if left button pressed
  1399.  2    call if left button released
  1400.  3    call if right button pressed
  1401.  4    call if right button released
  1402.  5    call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
  1403.  6    call if middle button released (Mouse Systems/Logitech/Genius mouse)
  1404.  7-15    unused
  1405. Note:    some versions of the Microsoft documentation incorrectly state that CX
  1406.       bit 0 means call if mouse cursor moves
  1407.  
  1408. Interrupt routine is called with:
  1409.     AX = condition mask (same bit assignments as call mask)
  1410.     BX = button state
  1411.     CX = cursor column
  1412.     DX = cursor row
  1413.     SI = horizontal mickey count
  1414.     DI = vertical mickey count
  1415. Notes:    some versions of the Microsoft documentation erroneously swap the
  1416.       meanings of SI and DI
  1417.     in text modes, the row and column will be reported as a multiple of
  1418.       the cell size, typically 8x8 pixels
  1419. --------M-33000D-----------------------------
  1420. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
  1421.     AX = 000Dh
  1422. SeeAlso: AX=000Eh,INT 10/AH=04h
  1423. --------M-33000E-----------------------------
  1424. INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
  1425.     AX = 000Eh
  1426. SeeAlso: AX=000Dh
  1427. --------M-33000F-----------------------------
  1428. INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
  1429.     AX = 000Fh
  1430.     CX = number of mickeys per 8 pixels horizontally (default 8)
  1431.     DX = number of mickeys per 8 pixels vertically (default 16)
  1432. SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
  1433. --------M-330010-----------------------------
  1434. INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
  1435.     AX = 0010h
  1436.     CX,DX = X,Y coordinates of upper left corner
  1437.     SI,DI = X,Y coordinates of lower right corner
  1438. Note:    mouse cursor is hidden in the specified region, and needs to be
  1439.       explicitly turned on again
  1440. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
  1441. --------M-330010-----------------------------
  1442. INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
  1443.     AX = 0010h
  1444.     ES:DX -> update region list (see below)
  1445. Notes:    mouse cursor is hidden in the specified region, and needs to be
  1446.       explicitly turned on again
  1447.     this version of the call is described in an August 1988 version of the
  1448.       Genius Mouse programmer's reference; it has been changed to conform
  1449.       to the Microsoft version shown above by version 9.06 (and possibly
  1450.       earlier versions)
  1451. SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
  1452.  
  1453. Format of update region list:
  1454. Offset    Size    Description
  1455.  00h    WORD    left-most column
  1456.  02h    WORD    top-most row
  1457.  04h    WORD    right-most column
  1458.  06h    WORD    bottom-most row
  1459. --------M-330011-----------------------------
  1460. INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
  1461.     AX = 0011h
  1462. Return: AX = FFFFh
  1463.     BX = number of buttons
  1464. SeeAlso: AX=0000h
  1465. --------M-330012-----------------------------
  1466. INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
  1467.     AX = 0012h
  1468.     BH = cursor width in words
  1469.     CH = rows in cursor
  1470.     BL = horizontal hot spot (-16 to 16)
  1471.     CL = vertical hot spot (-16 to 16)
  1472.     ES:DX -> bit map of screen and cursor maps
  1473. Return: AX = FFFFh if successful
  1474. SeeAlso: AX=0009h,AX=002Ah,AX=0035h
  1475. --------M-330013-----------------------------
  1476. INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
  1477.     AX = 0013h
  1478.     DX = threshold speed in mickeys/second, 0000h = default of 64/second
  1479. Note:    if speed exceeds threshold, the cursor's on-screen motion is doubled
  1480. SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
  1481. --------M-330014-----------------------------
  1482. INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
  1483.     AX = 0014h
  1484.     CX = call mask (see AX=000Ch)
  1485.     ES:DX -> FAR routine
  1486. Return: CX = call mask of previous interrupt routine
  1487.     ES:DX = FAR address of previous interrupt routine
  1488. SeeAlso: AX=000Ch,AX=0018h
  1489. --------M-330015-----------------------------
  1490. INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
  1491.     AX = 0015h
  1492. Return: BX = size of buffer needed to store driver state
  1493. SeeAlso: AX=0016h,AX=0017h,AX=0042h
  1494. --------M-330016-----------------------------
  1495. INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
  1496.     AX = 0016h
  1497.     BX = size of buffer (see AX=0015h)
  1498.     ES:DX -> buffer for driver state
  1499. Note:    although not documented (since the Microsoft driver does not use it),
  1500.       many drivers appear to require BX on input
  1501. SeeAlso: AX=0015h,AX=0017h
  1502. --------M-330017-----------------------------
  1503. INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
  1504.     AX = 0017h
  1505.     BX = size of buffer (see AX=0015h)
  1506.     ES:DX -> buffer containing saved state
  1507. Notes:    although not documented (since the Microsoft driver does not use it),
  1508.       many drivers appear to require BX on input
  1509.     some mouse drivers range-check the values in the saved state based on
  1510.       the current video mode; thus, the video mode should be restored
  1511.       before the mouse driver's state is restored
  1512. SeeAlso: AX=0015h,AX=0016h
  1513. --------M-330018-----------------------------
  1514. INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
  1515.     AX = 0018h
  1516.     CX = call mask (see below)
  1517.     ES:DX -> FAR routine to be invoked on mouse events (see below)
  1518. Return: AX = status
  1519.         0018h if successful
  1520.         FFFFh on error
  1521. Notes:    up to three handlers can be defined by separate calls to this function,
  1522.       each with a different combination of shift states in the call mask;
  1523.       calling this function again with a call mask of 0000h undefines the
  1524.       specified handler (official documentation); specifying the same
  1525.       call mask and an address of 0000h:0000h undefines the handler (real
  1526.       life)
  1527.     some versions of the documentation erroneously reverse the order of
  1528.       the bits in the call mask
  1529. SeeAlso: AX=000Ch,AX=0014h,AX=0019h
  1530.  
  1531. Bitfields for call mask:
  1532. Bit(s)    Description
  1533.  0    call if mouse moves
  1534.  1    call if left button pressed
  1535.  2    call if left button released
  1536.  3    call if right button pressed
  1537.  4    call if right button released
  1538.  5    call if shift button pressed during event
  1539.  6    call if ctrl key pressed during event
  1540.  7    call if alt key pressed during event
  1541. Note:    at least one of 5-7 must be set
  1542.  
  1543. User handler called with:
  1544.     AX = condition mask (same bit assignments as call mask)
  1545.     BX = button state
  1546.     CX = cursor column
  1547.     DX = cursor row
  1548.     SI = horizontal mickey count
  1549.     DI = vertical mickey count
  1550. Return: registers preserved
  1551. Note:    in text modes, the row and column will be reported as a multiple of
  1552.       the cell size, typically 8x8 pixels
  1553. --------M-330019-----------------------------
  1554. INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
  1555.     AX = 0019h
  1556.     CX = call mask (see AX=0018h)
  1557. Return: BX:DX = user interrupt vector
  1558.     CX = call mask (0000h if not found)
  1559. Note:    attempts to find a user event handler (defined by function 18h)
  1560.       whose call mask matches CX
  1561. SeeAlso: AX=0018h
  1562. --------M-33001A-----------------------------
  1563. INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
  1564.     AX = 001Ah
  1565.     BX = horizontal speed \
  1566.     CX = vertical speed   / (see AX=000Fh)
  1567.     DX = double speed threshold (see AX=0013h)
  1568. SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
  1569. --------M-33001B-----------------------------
  1570. INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
  1571.     AX = 001Bh
  1572. Return: BX = horizontal speed
  1573.     CX = vertical speed
  1574.     DX = double speed threshold
  1575. SeeAlso: AX=000Bh,AX=001Ah
  1576. --------M-33001C-----------------------------
  1577. INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
  1578.     AX = 001Ch
  1579.     BX = rate
  1580.         00h no interrupts allowed
  1581.         01h 30 per second
  1582.         02h 50 per second
  1583.         03h 100 per second
  1584.         04h 200 per second
  1585. Notes:    only available on InPort mouse
  1586.     values greater than 4 may cause unpredictable driver behavior
  1587. --------M-33001D-----------------------------
  1588. INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
  1589.     AX = 001Dh
  1590.     BX = display page number
  1591. Note:    the cursor will be displayed on the specified page
  1592. SeeAlso: AX=001Eh
  1593. --------M-33001E-----------------------------
  1594. INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
  1595.     AX = 001Eh
  1596. Return: BX = display page number
  1597. SeeAlso: AX=001Dh
  1598. --------M-33001F-----------------------------
  1599. INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
  1600.     AX = 001Fh
  1601. Return: AX = status
  1602.         001Fh successful
  1603.         ES:BX = INT 33 vector before mouse driver was first installed
  1604.         FFFFh unsuccessful
  1605. Notes:    restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
  1606.     if you restore INT 33 to ES:BX, driver will be completely disabled
  1607.     many drivers return AX=001Fh even though the driver has been disabled
  1608. SeeAlso: AX=0020h
  1609. --------M-330020-----------------------------
  1610. INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
  1611.     AX = 0020h
  1612. Return: AX = status
  1613.         0020h successful
  1614.         FFFFh unsuccessful
  1615. Notes:    restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
  1616.       which were removed by function 1Fh
  1617.     Microsoft's documentation states that no value is returned
  1618. SeeAlso: AX=001Fh
  1619. --------M-330021-----------------------------
  1620. INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
  1621.     AX = 0021h
  1622. Return: AX = status
  1623.         FFFFh if mouse driver installed
  1624.         BX = number of buttons (FFFFh = two buttons)
  1625.         0021h if mouse driver not installed
  1626. Note:    this call is identical to funtion 00h, but does not reset the mouse
  1627. SeeAlso: AX=0000h
  1628. --------M-330022-----------------------------
  1629. INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
  1630.     AX = 0022h
  1631.     BX = language (see below)
  1632. Note:    only available on international versions of the driver; US versions
  1633.       ignore this call
  1634. SeeAlso: AX=0023h
  1635.  
  1636. Values for language:
  1637.  00h    English
  1638.  01h    French
  1639.  02h    Dutch
  1640.  03h    German
  1641.  04h    Swedish
  1642.  05h    Finnish
  1643.  06h    Spanish
  1644.  07h    Portugese
  1645.  08h    Italian
  1646. --------M-330023-----------------------------
  1647. INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
  1648.     AX = 0023h
  1649. Return: BX = language (see AX=0022h)
  1650. Note:    the US version of the driver always returns zero
  1651. SeeAlso: AX=0022h
  1652. --------M-330024-----------------------------
  1653. INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
  1654.     AX = 0024h
  1655. Return: AX = FFFFh on error
  1656.     otherwise,
  1657.         BH = major version
  1658.         BL = minor version
  1659.         CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
  1660.         CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7)
  1661. SeeAlso: AX=004Dh,AX=006Dh
  1662. --------M-330025-----------------------------
  1663. INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
  1664.     AX = 0025h
  1665. Return: AX = general information (see below)
  1666.     BX = cursor lock flag for OS/2 to prevent reentrancy problems
  1667.     CX = mouse code active flag (for OS/2)
  1668.     DX = mouse driver busy flag (for OS/2)
  1669.  
  1670. Bitfields for general driver information:
  1671. Bit(s)    Description
  1672.  15    driver loaded as device driver rather than TSR
  1673.  14    driver is newer integrated type
  1674.  13,12    current cursor type
  1675.     00 software text cursor
  1676.     01 hardware text cursor (CRT Controller's cursor)
  1677.     1X graphics cursor
  1678.  11-8    interrupt rate (see AX=001Ch)
  1679.  7-0    count of currently-active Mouse Display Drivers (MDD), the newer
  1680.       integrated driver type
  1681. --------M-330026-----------------------------
  1682. INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
  1683.     AX = 0026h
  1684. Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
  1685.     CX = maximum virtual X (for current video mode)
  1686.     DX = maximum virtual Y
  1687. Note:    for driver versions before 7.05, this call returns the currently-set
  1688.       maximum coordinates; v7.05+ returns the absolute maximum coordinates
  1689. SeeAlso: AX=0031h
  1690. --------M-330026-----------------------------
  1691. INT 33 - Genius Mouse 9.06 - ???
  1692.     AX = 0026h
  1693. Return: CX = 0204h if CX was 0105h on entry, else unchanged
  1694. --------M-330027-----------------------------
  1695. INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
  1696.     AX = 0027h
  1697. Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
  1698.     BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
  1699.     CX = horizontal mickeys moved since last call
  1700.     DX = vertical mickeys moved since last call
  1701. SeeAlso: AX=000Bh
  1702. --------M-330028-----------------------------
  1703. INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
  1704.     AX = 0028h
  1705.     CX = new video mode (call is NOP if 0000h)
  1706.     DH = Y font size (00h = default)
  1707.     DL = X font size (00h = default)
  1708. Return: CL = status (00h = successful)
  1709. Notes:    DX is ignored unless the selected video mode supports font size control
  1710.     when CX=0000h, an internal flag that had been set by a previous call
  1711.       is cleared; this is required before a mouse reset
  1712. SeeAlso: AX=0029h,INT 10/AH=00h
  1713. --------M-330029-----------------------------
  1714. INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
  1715.     AX = 0029h
  1716.     CX = previous video mode
  1717.         0000h get first supported video mode
  1718.         other get next supported mode after mode CX
  1719. Return: CX = first/next video mode (0000h = no more video modes)
  1720.     DS:DX -> description of video mode or 0000h:0000h if none
  1721. Notes:    the enumerated video modes may be in any order and may repeat
  1722.     the description string (if available) is terminated by '$' followed by
  1723.       a NUL byte
  1724. SeeAlso: AX=0028h
  1725. --------M-33002A-----------------------------
  1726. INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
  1727.     AX = 002Ah
  1728. Return: AX = internal counter controlling cursor visibility
  1729.     BX = cursor hot spot column
  1730.     CX = cursor hot spot row
  1731.     DX = mouse type (00h none, 01h bus, 02h serial, 03h InPort, 04h IBM,
  1732.              05h Hewlett-Packard)
  1733. Note:    the hot spot location is relative to the upper left corner of the
  1734.       cursor block and may range from -128 to +127 both horizontally and
  1735.       vertically
  1736. SeeAlso: AX=0009h,AX=0012h,AX=0035h
  1737. --------M-33002B-----------------------------
  1738. INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
  1739.     AX = 002Bh
  1740.     BX = active acceleration profile
  1741.         0001h-0004h or FFFFh to restore default curves
  1742.     ES:SI -> buffer containing acceleration profile data (see below)
  1743. Return: AX = success flag
  1744. SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
  1745.  
  1746. Format of acceleration profile data:
  1747. Offset    Size    Description
  1748.  00h    BYTE    length of acceleration profile 1
  1749.  01h    BYTE    length of acceleration profile 2
  1750.  02h    BYTE    length of acceleration profile 3
  1751.  03h    BYTE    length of acceleration profile 4
  1752.  04h 32 BYTEs    threshold speeds for acceleration profile 1
  1753.  24h 32 BYTEs    threshold speeds for acceleration profile 2
  1754.  44h 32 BYTEs    threshold speeds for acceleration profile 3
  1755.  64h 32 BYTEs    threshold speeds for acceleration profile 4
  1756.  84h 32 BYTEs    speedup factor for acceleration profile 1
  1757.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1758.  A4h 32 BYTEs    speedup factor for acceleration profile 2
  1759.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1760.  C4h 32 BYTEs    speedup factor for acceleration profile 3
  1761.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1762.  E4h 32 BYTEs    speedup factor for acceleration profile 4
  1763.         (10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
  1764. 104h 16 BYTEs    name of acceleration profile 1 (blank-padded)
  1765. 114h 16 BYTEs    name of acceleration profile 2 (blank-padded)
  1766. 124h 16 BYTEs    name of acceleration profile 3 (blank-padded)
  1767. 134h 16 BYTEs    name of acceleration profile 4 (blank-padded)
  1768. Note:    unused bytes in the threshold speed fields are filled with 7Fh and
  1769.       unused bytes in the speedup factor fields are filled with 10h
  1770. --------M-33002C-----------------------------
  1771. INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
  1772.     AX = 002Ch
  1773. Return: AX = status (0000h success)
  1774.     BX = currently-active acceleration profile
  1775.     ES:SI -> acceleration profile data (see AX=002Bh)
  1776. SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
  1777. --------M-33002D-----------------------------
  1778. INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
  1779.     AX = 002Dh
  1780.     BX = acceleration level
  1781.         0001h-0004h to set profile, or FFFFh to get current profile
  1782. Return: AX = status
  1783.         0000h successful
  1784.         ES:SI -> 16-byte blank-padded name of acceleration profile
  1785.         FFFEh invalid acceleration curve number
  1786.         ES:SI destroyed
  1787.     BX = active acceleration curve number
  1788. SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
  1789. --------M-33002E-----------------------------
  1790. INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
  1791.     AX = 002Eh
  1792.     BL = flag (if nonzero, fill ES:SI buffer with default names on return)
  1793.     ES:SI -> 64-byte buffer for profile names (16 bytes per name)
  1794. Return: AX = status (0000h success)
  1795.     ES:SI buffer filled with default names if BL nonzero on entry
  1796. Note:    not supported by Logitech driver v6.10
  1797. SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
  1798. --------M-33002F-----------------------------
  1799. INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
  1800.     AX = 002Fh
  1801. Return: AX = status
  1802. Note:    invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
  1803. SeeAlso: INT 2F/AH=53h
  1804. --------M-330030-----------------------------
  1805. INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
  1806.     AX = 0030h
  1807.     CX = command
  1808.         0000h get status of BallPoint device
  1809.         other set rotation angle and masks
  1810.         BX = rotation angle (-32768 to 32767 degrees)
  1811.         CH = primary button mask
  1812.         CL = secondary button mask
  1813. Return: AX = button status (FFFFh if no BallPoint) (see below)
  1814.     BX = rotation angle (0-360 degrees)
  1815.     CH = primary button mask
  1816.     CL = secondary button mask
  1817.  
  1818. Bitfields for button status:
  1819. Bit(s)    Description
  1820.  5    button 1
  1821.  4    button 2
  1822.  3    button 3
  1823.  2    button 4
  1824.  other    zero
  1825. --------M-330031-----------------------------
  1826. INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
  1827.     AX = 0031h
  1828. Return: AX = virtual X minimum
  1829.     BX = virtual Y minimum
  1830.     CX = virtual X maximum
  1831.     DX = virtual Y maximum
  1832. Note:    the minimum and maximum values are those set by AX=0007h and AX=0008h;
  1833.       the default is minimum = 0 and maximum = absolute maximum
  1834.       (see AX=0026h)
  1835. SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
  1836. --------M-330032-----------------------------
  1837. INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
  1838.     AX = 0032h
  1839. Return: AX = active function flags (FFFFh for v8.10)
  1840.         bit 15: function 0025h supported
  1841.         bit 14: function 0026h supported
  1842.         ...
  1843.         bit 0:    function 0034h supported
  1844.     BX = ??? (0000h) officially unused
  1845.     CX = ??? (E000h) officially unused
  1846.     DX = ??? (0000h) officially unused
  1847. --------M-330033-----------------------------
  1848. INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
  1849.     AX = 0033h
  1850.     CX = size of buffer
  1851.         0000h get required buffer size
  1852.         Return: AX = 0000h
  1853.             CX = required size (0154h for Logitech v6.10, 0159h
  1854.                 for MS v8.10-8.20)
  1855.         other
  1856.         ES:DX -> buffer of CX bytes
  1857.         Return: AX = 0000h
  1858.             CX = number of bytes returned
  1859.             ES:DX buffer filled (see below)
  1860. SeeAlso: AX=002Bh
  1861.  
  1862. Format of data buffer:
  1863. Offset    Size    Description
  1864.  00h    BYTE    mouse type
  1865.  01h    BYTE    current language
  1866.  02h    BYTE    horizontal sensitivity (00h-64h)
  1867.  03h    BYTE    vertical sensitivity (00h-64h)
  1868.  04h    BYTE    double-speed threshold (00h-64h)
  1869.  05h    BYTE    ballistic curve (01h-04h)
  1870.  06h    BYTE    interrupt rate (01h-04h)
  1871.  07h    BYTE    cursor override mask
  1872.  08h    BYTE    laptop adjustment
  1873.  09h    BYTE    memory type (00h-02h)
  1874.  0Ah    BYTE    SuperVGA support (00h,01h)
  1875.  0Bh    BYTE    rotation angle
  1876.  0Ch    BYTE    ???
  1877.  0Dh    BYTE    primary button (01h-04h)
  1878.  0Eh    BYTE    secondary button (01h-04h)
  1879.  0Fh    BYTE    click lock enabled (00h,01h)
  1880.  10h 324 BYTEs    acceleration profile data (see AX=002Bh)
  1881. 154h  5 BYTEs    ??? (Microsoft driver, but not Logitech)
  1882. --------M-330034-----------------------------
  1883. INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
  1884.     AX = 0034h
  1885. Return: AX = status (0000h successful)
  1886.     ES:DX -> ASCIZ initialization (.INI) file name
  1887. --------M-330035-----------------------------
  1888. INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
  1889.     AX = 0035h
  1890.     BX = function
  1891.         FFFFh get current settings
  1892.         Return: AX = 0000h
  1893.             BH = style (see below)
  1894.             BL = size (see below)
  1895.             CH = threshold
  1896.             CL = active flag (00h disabled, 01h enabled)
  1897.             DX = delay
  1898.         other
  1899.         BH = style (00h normal, 01h reverse, 02h transparent)
  1900.         BL = size (00h small "1", 01h medium "1.5", 02h large "2")
  1901.         CH = threshold (00h-64h)
  1902.         CL = active flag (00h disable size change, 01h enable)
  1903.         DX = delay (0000h-0064h)
  1904.         Return: AX = 0000h
  1905. Note:    not supported by Logitech driver v6.10
  1906. SeeAlso: AX=0012h,AX=002Ah
  1907. --------M-330042-----------------------------
  1908. INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
  1909.     AX = 0042h
  1910. Return: AX = FFFFh successful
  1911.         BX = buffer size in bytes for functions 50h and 52h
  1912.        = 0000h MSMOUSE not installed
  1913.        = 0042h functions 42h, 50h, and 52h not supported
  1914. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1915. SeeAlso: AX=0015h,AX=0050h,AX=0052h
  1916. --------M-330043-----------------------------
  1917. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
  1918.     AX = 0043h
  1919.     CX:BX -> ??? buffer (see below)
  1920.     DL = ???
  1921. Return: ???
  1922. Notes:    also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
  1923.     this function is also supported by the Genius Mouse 9.06 driver
  1924.  
  1925. Format of buffer:
  1926. Offset    Size    Description
  1927.  00h    WORD    I/O port address
  1928.  02h    BYTE    ???
  1929.  03h    BYTE    interrupt number
  1930.  04h    BYTE    interrupt mask for interrupt controller
  1931.  05h  5 BYTEs    ???
  1932. --------M-330044CXCDEF-----------------------
  1933. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
  1934.     AX = 0044h
  1935.     CX = CDEFh
  1936. Return: AX = new state of "Ignore Application Acceleration Commands" flag
  1937. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1938. SeeAlso: AX=0045h
  1939. --------M-330045CXCDEF-----------------------
  1940. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
  1941.     AX = 0045h
  1942.     CX = CDEFh
  1943. Return: AX = new state of resolution doubling flag
  1944. Note:    this function is also supported by the Genius Mouse 9.06 driver
  1945. SeeAlso: AX=0044h
  1946. --------M-330047-----------------------------
  1947. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
  1948.     AX = 0047h
  1949.     ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
  1950. Return: ???
  1951. Note:    also supported by Genius Mouse 9.06 driver
  1952. SeeAlso: AX=0067h
  1953. --------M-330048BXCDEF-----------------------
  1954. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
  1955.     AX = 0048h
  1956.     BX = CDEFh
  1957. Return: CX = ???
  1958.     BH = ???
  1959.     BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
  1960. Note:    also supported by Genius Mouse 9.06 driver
  1961. --------M-33004B-----------------------------
  1962. INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK
  1963.     AX = 004Bh
  1964. Return: ES:DI -> signature/description string if installed
  1965. Note:    the signature string in v7.04d is
  1966.       "Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
  1967. --------M-33004CBXCDEF-----------------------
  1968. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
  1969.     AX = 004Ch
  1970.     BX = CDEFh
  1971. Note:    also supported by Genius Mouse 9.06
  1972. SeeAlso: AX=006Ch
  1973. --------M-33004D-----------------------------
  1974. INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
  1975.     AX = 004Dh
  1976. Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft"
  1977. Notes:    also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
  1978.       mouse drivers
  1979.     in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
  1980.       follows the above copyright message (KYE Corp. manufactures the
  1981.       driver)
  1982. SeeAlso: AX=0024h,AX=006Dh,AX=0666h
  1983. --------M-33004F-----------------------------
  1984. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
  1985.     AX = 004Fh
  1986. Return: nothing
  1987. Note:    also supported by Genius Mouse 9.06
  1988. SeeAlso: AX=0043h,AX=0053h
  1989. --------M-330050-----------------------------
  1990. INT 33 - PCMOUSE - SAVE MSMOUSE STATE
  1991.     AX = 0050h
  1992.     BX = buffer size (ignored by some driver versions)
  1993.     ES:DX -> buffer
  1994. Return: AX = FFFFh if successful
  1995. Notes:    the buffer must be large enough to hold the entire state, or following
  1996.       data will be overwritten by state data in versions which ignore BX;
  1997.       use INT 33/AX=0042h to get the required size
  1998.     this function is also supported by the Genius Mouse 9.06 driver
  1999. SeeAlso: AX=0042h,AX=0052h
  2000. --------M-330052-----------------------------
  2001. INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
  2002.     AX = 0052h
  2003.     BX = buffer size (ignored by some driver versions)
  2004.     ES:DX -> buffer
  2005. Return: AX = FFFFh if successful
  2006. Note:    also supported by Genius Mouse 9.06 driver
  2007. SeeAlso: AX=0050h
  2008. --------M-330053-----------------------------
  2009. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
  2010.     AX = 0053h
  2011. Return: nothing
  2012. Note:    also supported by Genius Mouse 9.06
  2013. SeeAlso: AX=0043h,AX=004Fh
  2014. --------M-330054CXCDEF-----------------------
  2015. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
  2016.     AX = 0054h
  2017.     CX = CDEFh
  2018.     BX = new acceleration level (0-9)
  2019. Return: ???
  2020. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2021. SeeAlso: AX=005Ah
  2022. --------M-330055-----------------------------
  2023. INT 33 - Kraft Mouse - GET ???
  2024.     AX = 0055h
  2025. Return: CX = ???
  2026.     DX = ???
  2027.     ES = ???
  2028. --------M-330058-----------------------------
  2029. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2030.     AX = 0058h
  2031. Return: AX = CS of driver
  2032.     CX:BX = original INT 33 vector
  2033.     DX = ???
  2034. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2035. --------M-33005A-----------------------------
  2036. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
  2037.     AX = 005Ah
  2038.     CX = number of WORDs to copy (max 0014h, but not range-checked)
  2039.     DX:SI -> buffer containing thresholds??? (CX words)
  2040.     DX:BX -> buffer containing acceleration values???
  2041.         (9*14h words, only first CX of each 14h used)
  2042.     ???
  2043. Return: CF clear
  2044.     ???
  2045. Note:    this function is also supported by Genius Mouse 9.06
  2046. SeeAlso: AX=0054h
  2047. --------M-330061BXCDEF-----------------------
  2048. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2049.     AX = 0061h
  2050.     BX = CDEFh
  2051. Return: CX = ???
  2052. Note:    also supported by Genius Mouse 9.06
  2053. --------M-330067-----------------------------
  2054. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
  2055.     AX = 0067h
  2056. Return: BL = number of buttons???
  2057. Note:    also supported by Genius Mouse 9.06
  2058. SeeAlso: AX=0047h
  2059. --------M-33006C-----------------------------
  2060. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - GET/SET ???
  2061.     AX = 006Ch
  2062.     BX = IRQ??? (0003h or 0004h), or 0000h to get current values only
  2063.     CL = ???
  2064.     DX = ???
  2065. Return: BX = current or new ???
  2066.     DX = ???
  2067. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2068.       TRUEDOX Technology Corporation
  2069. SeeAlso: AX=00A1h,AX=0666h
  2070. --------M-33006CBXCDEF-----------------------
  2071. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
  2072.     AX = 006Ch
  2073.     BX = CDEFh
  2074. Note:    also supported by Genius Mouse 9.06
  2075. SeeAlso: AX=004Ch
  2076. --------M-33006D-----------------------------
  2077. INT 33 - MS MOUSE - GET VERSION STRING
  2078.     AX = 006Dh
  2079. Return: ES:DI -> Microsoft version number of resident driver (see below)
  2080. Notes:    also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
  2081.       drivers
  2082.     the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
  2083.       Microsoft version as 7.00 even though they do not support any of the
  2084.       functions from 0025h through 002Dh supported by the MS 7.00 driver
  2085.       (the Genius Mouse driver supports function 0026h, but it differs
  2086.       from the Microsoft function)
  2087.     the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
  2088.       but as 6.24 through AX=0024h
  2089. SeeAlso: AX=0024h,AX=004Dh,AX=266Ch
  2090.  
  2091. Format of Microsoft version number:
  2092. Offset    Size    Description
  2093.  00h    BYTE    major version
  2094.  01h    BYTE    minor version (BCD)
  2095. --------M-330070BXABCD-----------------------
  2096. INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
  2097.     AX = 0070h
  2098.     BX = ABCDh
  2099. Return: AX = ABCDh if installed
  2100.         BX:CX -> data structure (see below)
  2101. Notes:    this function is also supported by the Genius Mouse 9.06 driver
  2102.     the v7.01 POPUP.COM and menu drivers also check for the signature
  2103.       CDh ABh BAh DCh at offset -2Ch from the interrupt handler
  2104.     if POPUP is not loaded, the returned data structure contains the proper
  2105.       signature at offset 00h, but not at offset 08h
  2106.  
  2107. Format of data structure:
  2108. Offset    Size    Description
  2109.  00h    WORD    signature ABCDh
  2110.  02h    DWORD    pointer to info structure???
  2111.  06h  2 BYTEs    ???
  2112.  08h    WORD    signature ABCDh
  2113.  
  2114. Format of info structure:
  2115. Offset    Size    Description
  2116.  00h    WORD    driver version
  2117.  02h  8 BYTEs    ???
  2118.  0Ah    WORD    segment of ???
  2119.     ???
  2120. --------M-330072BXABCD-----------------------
  2121. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
  2122.     AX = 0072h
  2123.     BX = ABCDh
  2124. Return: ???
  2125. Note:    this function is also supported by the Genius Mouse 9.06 driver
  2126. --------M-330073BXCDEF-----------------------
  2127. INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
  2128.     AX = 0073h
  2129.     BX = CDEFh
  2130.     ES:DX -> 3-byte buffer for button assignments
  2131. Return: CX = number of buttons???
  2132.     ES:DX buffer filled (default is "LMR")
  2133. Note:    also supported by Genius Mouse 9.06
  2134. SeeAlso: AX=0067h
  2135. --------M-3300A1-----------------------------
  2136. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2137.     AX = 00A1h
  2138.     ???
  2139. Return: ???
  2140. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2141.       TRUEDOX Technology Corporation
  2142. SeeAlso: AX=006Ch"TRUEDOX",AX=00A6h,AX=0666h
  2143. --------M-3300A6-----------------------------
  2144. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2145.     AX = 00A6h
  2146.     BL = ???
  2147. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2148.       TRUEDOX Technology Corporation
  2149. SeeAlso: AX=00A6h,AX=0666h
  2150. --------M-33012E-----------------------------
  2151. INT 33 - MS MOUSE v8.10+ - ???
  2152.     AX = 012Eh
  2153.     BL = ???
  2154. Return: AX = 0000h
  2155. Note:    not supported by Logitech driver v6.10
  2156. SeeAlso: AX=002Eh,AX=022Eh
  2157. --------M-33022E-----------------------------
  2158. INT 33 - MS MOUSE v8.10+ - ???
  2159.     AX = 022Eh
  2160.     BL = ???
  2161. Return: AX = 0000h
  2162. Note:    not supported by Logitech driver v6.10
  2163. SeeAlso: AX=002Eh,AX=012Eh
  2164. --------M-330666-----------------------------
  2165. INT 33 U - TRUEDOX Model 300M MOUSE.COM v4.01 - ???
  2166.     AX = 0666h
  2167. Return: DX:AX -> ASCII sig "Copyright 1987-1992 TRUEDOX Technology Corporation"
  2168. Note:    this is the mouse driver for the Dell Dimension series of computers, by
  2169.       TRUEDOX Technology Corporation
  2170. SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
  2171. --------M-33136C-----------------------------
  2172. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2173.     AX = 136Ch
  2174.     BX = ???
  2175. Return: AX = ???
  2176.     BX = ???
  2177. --------M-33146C-----------------------------
  2178. INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
  2179.     AX = 146Ch
  2180.     BL = function
  2181.         00h set ???
  2182.         BH = new value (zero/nonzero to clear/set)
  2183.         else get ???
  2184.         Return: ???
  2185. --------M-33156C-----------------------------
  2186. INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
  2187.     AX = 156Ch
  2188. Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
  2189.     ES:SI -> version string, terminated with CRLF
  2190. --------M-33166C-----------------------------
  2191. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2192.     AX = 166Ch
  2193.     BL = ???
  2194.         00h ???
  2195.         01h ???
  2196.         other ???
  2197.         BH = new value of ???
  2198.         Return: AX = FFFFh
  2199. --------M-33176C-----------------------------
  2200. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2201.     AX = 176Ch
  2202.     ???
  2203. Return: ???
  2204. --------M-33186C-----------------------------
  2205. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2206.     AX = 186Ch
  2207.     ???
  2208. Return: ???
  2209. --------M-33196C-----------------------------
  2210. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2211.     AX = 196Ch
  2212.     ???
  2213. Return: ???
  2214. --------M-331A6C-----------------------------
  2215. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2216.     AX = 1A6Ch
  2217. Return: AX = FFFFh
  2218.     BX = ???
  2219.     CX = ???
  2220. SeeAlso: AX=1B6Ch
  2221. --------M-331B6C-----------------------------
  2222. INT 33 - LOGITECH MOUSE v6.10+ - SET ???
  2223.     AX = 1B6Ch
  2224.     BX = new value for ??? (0000h-0003h)
  2225. Return: AX = FFFFh
  2226. SeeAlso: AX=1A6Ch
  2227. --------M-331C6C-----------------------------
  2228. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2229.     AX = 1C6Ch
  2230.     BX = ???
  2231.         <42h ???
  2232.         =42h ???
  2233.         >42h ???
  2234.             ES:DI -> ???
  2235.             Return: AX = ???
  2236. --------M-331D6C-----------------------------
  2237. INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
  2238.     AX = 1D6Ch
  2239. Return: BX = direction (0=north, 1=south, 2=east, 3=west)
  2240. SeeAlso: AX=1E6Ch
  2241. --------M-331E6C-----------------------------
  2242. INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
  2243.     AX = 1E6Ch
  2244.     BX = direction (0=north, 1=south, 2=east, 3=west)
  2245. SeeAlso: AX=1D6Ch
  2246. --------M-331F6C-----------------------------
  2247. INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
  2248.     AX = 1F6Ch
  2249. Return: BX = 0=off, 1=on
  2250.     CX = 1=low, 2=high
  2251. SeeAlso: AX=002Ch,AX=236Ch
  2252. --------M-33206C-----------------------------
  2253. INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
  2254.     AX = 206Ch
  2255.     BX = parameter (00h = right, FFh = left)
  2256. SeeAlso: AX=216Ch
  2257. --------M-33216C-----------------------------
  2258. INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
  2259.     AX = 216Ch
  2260. Return: BX = parameter (00h = right, FFh = left)
  2261. SeeAlso: AX=206Ch
  2262. --------M-33226C-----------------------------
  2263. INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
  2264.     AX = 226Ch
  2265. Note:    this only frees memory; does not restore hooked interrupts
  2266. --------M-33236C-----------------------------
  2267. INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
  2268.     AX = 236Ch
  2269.     BX = 0=off, 1=on
  2270.     CX = 1=low, 2=high
  2271. SeeAlso: AX=002Ch,AX=1F6Ch
  2272. --------M-33246C-----------------------------
  2273. INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
  2274.     AX = 246Ch
  2275.     ES:DX -> parameter table buffer (see below)
  2276. Return: AX = FFFFh if driver installed for serial mouse
  2277. SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
  2278.  
  2279. Format of parameter table:
  2280. Offset    Size    Description
  2281.  00h    WORD    baud rate divided by 100  (serial mouse only)
  2282.  02h    WORD    emulation          (serial mouse only)
  2283.  04h    WORD    report rate          (serial mouse only)
  2284.  06h    WORD    firmware revision      (serial mouse only)
  2285.  08h    WORD    00h              (serial mouse only)
  2286.  0Ah    WORD    port              (serial mouse only)
  2287.  0Ch    WORD    physical buttons
  2288.  0Eh    WORD    logical buttons
  2289. --------M-33256CBX0000-----------------------
  2290. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
  2291.     AX = 256Ch
  2292.     BX = 0000h
  2293.     CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
  2294. Return: AX = FFFFh if driver installed for serial mouse
  2295. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
  2296. --------M-33256CBX0001-----------------------
  2297. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
  2298.     AX = 256Ch
  2299.     BX = 0001h
  2300.     CX = emulation
  2301.         00h 5 byte packed binary
  2302.         01h 3 byte packed binary
  2303.         02h hexadecimal
  2304.         03h relative bit pad
  2305.         04h not supported
  2306.         05h MM Series
  2307.         06h not supported
  2308.         07h Microsoft
  2309. Return: AX = FFFFh if driver installed for serial mouse
  2310. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
  2311. --------M-33256CBX0002-----------------------
  2312. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
  2313.     AX = 256Ch
  2314.     BX = 0002h
  2315.     CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
  2316. Return: AX = FFFFh if driver installed for serial mouse
  2317. SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
  2318. --------M-33256CBX0003-----------------------
  2319. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
  2320.     AX = 256Ch
  2321.     BX = 0003h
  2322.     CX = port (1, 2)
  2323. Return: AX = FFFFh if driver installed for serial mouse
  2324. SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
  2325. --------M-33256CBX0004-----------------------
  2326. INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
  2327.     AX = 256Ch
  2328.     BX = 0004h
  2329.     CX = buttons (2, 3)
  2330. Return: AX = FFFFh if driver installed for serial mouse
  2331. SeeAlso: AX=246Ch,AX=276Ch
  2332. --------M-33266C-----------------------------
  2333. INT 33 - LOGITECH MOUSE - GET VERSION???
  2334.     AX = 266Ch
  2335. Return: BX = 'SS'
  2336.     CH = '4'  major version number
  2337.     CL = '1'  minor version number
  2338. SeeAlso: AX=006Dh
  2339. --------M-33276C-----------------------------
  2340. INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
  2341.     AX = 276Ch
  2342. SeeAlso: AX=256Ch
  2343. --------M-333000-----------------------------
  2344. INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
  2345.     AX = 3000h
  2346. Return: AX = FFFFh if installed
  2347.         BX = version number (BH = major, BL = minor)
  2348. Program: SMD is a programmer's library by Andy Hakim which provides a
  2349.       graphics-style mouse cursor in text mode.  PrecisePoint is an
  2350.       SMD-based TSR which replaces the block mouse cursor in text
  2351.       applications.
  2352. SeeAlso: AX=0000h,AX=3001h,AX=3003h
  2353. --------M-333001-----------------------------
  2354. INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
  2355.     AX = 3001h
  2356. Return: AX = status (0000h = disabled, 0001h = enabled)
  2357. Note:    SMD remains disabled if running under Desqview or in graphics mode
  2358. SeeAlso: AX=0001h,AX=0002h,AX=3002h
  2359. --------M-333002-----------------------------
  2360. INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
  2361.     AX = 3002h
  2362. Return: AX = status (0000h = disabled, 0001h = enabled)
  2363. SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
  2364. --------M-333003-----------------------------
  2365. INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
  2366.     AX = 3003h
  2367.     BL = data structure selector
  2368.         00h Primary Bitmap (used for 25 line mode)
  2369.         01h Secondary Bitmap (used for 43/50 line modes)
  2370.         02h Sacrifice Character Map
  2371.         03h Program Information
  2372. Return: ES:DX -> selected data structure
  2373. SeeAlso: AX=3000h
  2374.  
  2375. Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]
  2376. Offset    Size    Description
  2377.  00h    BYTE    vertical size of bitmap (00h - 10h)
  2378.  01h    BYTE    horizontal size of bitmap (00h - 10h)
  2379.  02h    BYTE    vertical hotspot position (00h - 10h)
  2380.  03h    BYTE    horizontal hotspot position (00h - 10h)
  2381.  04h 16 WORDs    cursor bitmap data
  2382.  14h 16 WORDs    screen bitmap data
  2383.  
  2384. Format of Sacrifice Character Map [SMD_SMAP_STRUCT]
  2385. Offset    Size    Description
  2386.  00h    BYTE    bytes are character values (00h-FFh) used in place of the
  2387.  01h    BYTE    actual character for the corresponding position on the screen
  2388.  02h    BYTE         +--------------+      occupied by part or all of the mouse
  2389.  03h    BYTE         | 0h | 1h | 2h |      cursor
  2390.  04h    BYTE         |----+----+----|
  2391.  05h    BYTE         | 3h | 4h | 5h |
  2392.  06h    BYTE         |----+----+----|
  2393.  07h    BYTE         | 6h | 7h | 8h |
  2394.  08h    BYTE         +--------------+
  2395.  
  2396. Format of Program Information [SMD_INFO_STRUCT]
  2397. Offset    Size    Description
  2398.  00h    WORD    segment of old interrupt 33h handler
  2399.  02h    WORD    offset of old interrupt 33h handler
  2400.  04h    WORD    PSP of SMD
  2401.  06h    BYTE    ENABLE/DISABLE manual setting status
  2402.  07h    BYTE    ENABLE/DISABLE internal usage status
  2403. --------M-333004-----------------------------
  2404. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2405.     AX = 3004h
  2406. SeeAlso: AX=3000h
  2407. --------M-333005-----------------------------
  2408. INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
  2409.     AX = 3005h
  2410. SeeAlso: AX=3000h
  2411. --------M-334F00-----------------------------
  2412. INT 33 - LOGITECH MOUSE v6.10+ - GET ???
  2413.     AX = 4F00h
  2414. Return: AX = 004Fh if supported
  2415.     BX = ???
  2416.     ES:DI -> ???
  2417. SeeAlso: AX=4F01h
  2418. --------M-334F01-----------------------------
  2419. INT 33 - LOGITECH MOUSE v6.10+ - ???
  2420.     AX = 4F01h
  2421.     ES = ???
  2422. Return: AX = 004Fh if supported
  2423.     ES:DI -> ???
  2424. SeeAlso: AX=4F00h
  2425. --------T-33FFE6-----------------------------
  2426. INT 33 - Switch-It v3.23 - GET ??? PROGRAM
  2427.     AX = FFE6h
  2428.     CX = length of buffer
  2429.     ES:DI -> buffer for program name
  2430. Return: ES:DI buffer filled
  2431. Program: Switch-It is a task switcher supporting up to 100 programs
  2432.       simultaneously by Better Software Technology, Inc.
  2433. --------T-33FFE7-----------------------------
  2434. INT 33 - Switch-It v3.23 - GET ???
  2435.     AX = FFE7h
  2436. Return: AX = ???
  2437. --------T-33FFE8-----------------------------
  2438. INT 33 - Switch-It v3.23 - ???
  2439.     AX = FFE8h
  2440.     CX = length of name including terminating NUL
  2441.     DS:SI -> ASCIZ program pathname
  2442. --------T-33FFE9-----------------------------
  2443. INT 33 - Switch-It v3.23 - SET ???
  2444.     AX = FFE9h
  2445.     BX = ???
  2446. --------T-33FFEA-----------------------------
  2447. INT 33 - Switch-It v3.23 - SET ???
  2448.     AX = FFEAh
  2449.     BL = ???
  2450. --------T-33FFEB-----------------------------
  2451. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2452.     AX = FFEBh
  2453. --------T-33FFEC-----------------------------
  2454. INT 33 - Switch-It v3.23 - SET ???
  2455.     AX = FFECh
  2456.     BL = ???
  2457. --------T-33FFED-----------------------------
  2458. INT 33 - Switch-It v3.23 - GET ???
  2459.     AX = FFEDh
  2460. Return: AX = ??? (0001h)
  2461.     BX = ???
  2462. Program: Switch-It is a task switcher supporting up to 100 programs
  2463.       simultaneously by Better Software Technology, Inc.
  2464. --------T-33FFEE-----------------------------
  2465. INT 33 - Switch-It v3.23 - GET ???
  2466.     AX = FFEEh
  2467. Return: AX = ???
  2468. --------T-33FFEF-----------------------------
  2469. INT 33 - Switch-It v3.23 - GET ???
  2470.     AX = FFEFh
  2471. Return: BX:AX -> ???
  2472. --------T-33FFF0-----------------------------
  2473. INT 33 - Switch-It v3.23 - SET ???
  2474.     AX = FFF0h
  2475.     BL = ???
  2476. --------T-33FFF1-----------------------------
  2477. INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
  2478.     AX = FFF1h
  2479. Return: BX:AX -> ASCIZ pathname of configuration file
  2480. Program: Switch-It is a task switcher supporting up to 100 programs
  2481.       simultaneously by Better Software Technology, Inc.
  2482. --------T-33FFF2-----------------------------
  2483. INT 33 - Switch-It v3.23 - SET ??? FLAG
  2484.     AX = FFF2h
  2485. Return: AL = 01h
  2486. --------T-33FFF3-----------------------------
  2487. INT 33 - Switch-It v3.23 - GET ???
  2488.     AX = FFF3h
  2489. Return: AX = ???
  2490. --------T-33FFF4-----------------------------
  2491. INT 33 - Switch-It v3.23 - SET ???
  2492.     AX = FFF4h
  2493.     BX = ???
  2494.     CX = ???
  2495. --------T-33FFF5-----------------------------
  2496. INT 33 - Switch-It v3.23 - GET ???
  2497.     AX = FFF5h
  2498. Return: AX = ???
  2499. --------T-33FFF6-----------------------------
  2500. INT 33 - Switch-It v3.23 - GET ???
  2501.     AX = FFF6h
  2502. Return: AX = ???
  2503. --------T-33FFF7-----------------------------
  2504. INT 33 - Switch-It v3.23 - GET ???
  2505.     AX = FFF7h
  2506.     BX = index of ???
  2507. Return: AX = ???
  2508. --------T-33FFF8-----------------------------
  2509. INT 33 - Switch-It v3.23 - ???
  2510.     AX = FFF8h
  2511.     BX = ???
  2512.     CX = length of program name, including terminating NUL
  2513.     DS:SI -> ASCIZ program pathname
  2514. Return: ???
  2515. Program: Switch-It is a task switcher supporting up to 100 programs
  2516.       simultaneously by Better Software Technology, Inc.
  2517. --------T-33FFF9-----------------------------
  2518. INT 33 - Switch-It v3.23 - NOP
  2519.     AX = FFF9h
  2520. --------T-33FFFA-----------------------------
  2521. INT 33 - Switch-It v3.23 - SET ???
  2522.     AX = FFFAh
  2523.     BX = index of program
  2524. SeeAlso: AX=FFFBh,AX=FFFCh
  2525. --------T-33FFFB-----------------------------
  2526. INT 33 - Switch-It v3.23 - GET ???
  2527.     AX = FFFBh
  2528.     BX = index of program
  2529. Return: AX = ??? (0000h or 0001h)
  2530. SeeAlso: AX=FFFAh,AX=FFFCh
  2531. --------T-33FFFC-----------------------------
  2532. INT 33 - Switch-It v3.23 - CLEAR ???
  2533.     AX = FFFCh
  2534.     BX = index of program
  2535. SeeAlso: AX=FFFAh,AX=FFFCh
  2536. --------T-33FFFD-----------------------------
  2537. INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
  2538.     AX = FFFDh
  2539. Return: AX = first available segment???
  2540.     BX = paragraph of top of conventional memory
  2541.     DX = PSP segment of SI.EXE
  2542. --------T-33FFFE-----------------------------
  2543. INT 33 - Switch-It v3.23 - INSTALLATION CHECK
  2544.     AX = FFFEh
  2545. Return: BX = ???
  2546.     DX = 5349h ("SI")
  2547. --------T-33FFFF-----------------------------
  2548. INT 33 - Switch-It v3.23 - ???
  2549.     AX = FFFFh
  2550.     BX = ???
  2551. Program: Switch-It is a task switcher supporting up to 100 programs
  2552.       simultaneously by Better Software Technology, Inc.
  2553. --------r-34---------------------------------
  2554. INT 34 - FLOATING POINT EMULATION - OPCODE D8h
  2555. Desc:    this interrupt is used to emulate floating-point instructions with
  2556.       an opcode of D8h
  2557. Note:    the floating-point emulators in Borland and Microsoft languages and
  2558.       Lahey FORTRAN use this interrupt
  2559. SeeAlso: INT 35,INT 3E
  2560. --------r-35---------------------------------
  2561. INT 35 - FLOATING POINT EMULATION - OPCODE D9h
  2562. Desc:    this interrupt is used to emulate floating-point instructions with
  2563.       an opcode of D9h
  2564. Note:    the floating-point emulators in Borland and Microsoft languages and
  2565.       Lahey FORTRAN use this interrupt
  2566. SeeAlso: INT 34,INT 36
  2567. --------r-36---------------------------------
  2568. INT 36 - FLOATING POINT EMULATION - OPCODE DAh
  2569. Desc:    this interrupt is used to emulate floating-point instructions with
  2570.       an opcode of DAh
  2571. Note:    the floating-point emulators in Borland and Microsoft languages and
  2572.       Lahey FORTRAN use this interrupt
  2573. SeeAlso: INT 35,INT 37
  2574. --------r-37---------------------------------
  2575. INT 37 - FLOATING POINT EMULATION - OPCODE DBh
  2576. Desc:    this interrupt is used to emulate floating-point instructions with
  2577.       an opcode of DBh
  2578. Note:    the floating-point emulators in Borland and Microsoft languages and
  2579.       Lahey FORTRAN use this interrupt
  2580. SeeAlso: INT 36,INT 38
  2581. --------r-38---------------------------------
  2582. INT 38 - FLOATING POINT EMULATION - OPCODE DCh
  2583. Desc:    this interrupt is used to emulate floating-point instructions with
  2584.       an opcode of DCh
  2585. Note:    the floating-point emulators in Borland and Microsoft languages and
  2586.       Lahey FORTRAN use this interrupt
  2587. SeeAlso: INT 37,INT 39
  2588. --------O-38---------------------------------
  2589. INT 38 - PC-MOS/386 v3.0 - API
  2590. Note:    this API was been moved to INT D4h sometime between versions 3.0 and
  2591.       5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
  2592.       12h
  2593. SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
  2594. --------r-39---------------------------------
  2595. INT 39 - FLOATING POINT EMULATION - OPCODE DDh
  2596. Desc:    this interrupt is used to emulate floating-point instructions with
  2597.       an opcode of DDh
  2598. Note:    the floating-point emulators in Borland and Microsoft languages and
  2599.       Lahey FORTRAN use this interrupt
  2600. SeeAlso: INT 38,INT 3A
  2601. --------r-3A---------------------------------
  2602. INT 3A - FLOATING POINT EMULATION - OPCODE DEh
  2603. Desc:    this interrupt is used to emulate floating-point instructions with
  2604.       an opcode of DEh
  2605. Note:    the floating-point emulators in Borland and Microsoft languages and
  2606.       Lahey FORTRAN use this interrupt
  2607. SeeAlso: INT 39,INT 3B
  2608. --------r-3B---------------------------------
  2609. INT 3B - FLOATING POINT EMULATION - OPCODE DFh
  2610. Desc:    this interrupt is used to emulate floating-point instructions with
  2611.       an opcode of DFh
  2612. Note:    the floating-point emulators in Borland and Microsoft languages and
  2613.       Lahey FORTRAN use this interrupt
  2614. SeeAlso: INT 3A,INT 3C
  2615. --------r-3C---------------------------------
  2616. INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
  2617. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2618.       Lahey FORTRAN use this interrupt
  2619.     the generated code is  CD 3C xy mm ....
  2620.       where xy is a modified ESC instruction and mm is the modR/M byte.
  2621.       The xy byte appears to be encoded as
  2622.         s s 0 1 1 x x x      or    s s 0 0 0 x x x
  2623.       where "ss" specifies the segment override:
  2624.         00 -> DS:
  2625.         01 -> SS:
  2626.         10 -> CS:
  2627.         11 -> ES:
  2628. SeeAlso: INT 3B,INT 3D
  2629. --------r-3D---------------------------------
  2630. INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
  2631. Notes:    the floating-point emulators in Borland and Microsoft languages and
  2632.       Lahey FORTRAN use this interrupt
  2633.     this vector is modified but not restored by Direct Access v4.0, and
  2634.       may be left dangling by other programs written with the same version
  2635.       of compiled BASIC
  2636. SeeAlso: INT 3C,INT 3E
  2637. --------r-3E---------------------------------
  2638. INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
  2639. Notes:    the two bytes following the INT 3E instruction are the subcode and
  2640.       a NOP (90h), except for subcodes DCh and DEh, where the second byte
  2641.       is a register count (01h-08h)
  2642.     this vector is modified but not restored by Direct Access v4.0, and
  2643.       may be left dangling by other programs written with the same version
  2644.       of compiled BASIC
  2645. SeeAlso: INT 3D
  2646.  
  2647. Values for subcode:
  2648. Subcode        Function
  2649.  DCh    load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
  2650.       top of the stack prior to the INT 3E with the 8087 register contents
  2651.  DEh    load 8087 registers from top of 8086 stack; ST0 is furthest from top
  2652.       of 8086 stack
  2653.  E0h    round TOS and R1 to single precision, compare, pop twice
  2654.       returns AX=8087 status word, FLAGS=8087 condition bits
  2655.  E2h    round TOS and R1 to double precision, compare, pop twice
  2656.       returns AX=8087 status word, FLAGS=8087 condition bits
  2657.     Note: buggy in TPas5.5, because it sets the 8087 precision control
  2658.       field to the undocumented value 01h; this results in actually
  2659.       rounding to single precision
  2660.  E4h    compare TOS/R1 with two POP's
  2661.       returns FLAGS=8087 condition bits
  2662.  E6h    compare TOS/R1 with POP
  2663.       returns FLAGS=8087 condition bits
  2664.  E8h    FTST (check TOS value)
  2665.       returns FLAGS=8087 condition bits
  2666.  EAh    FXAM (check TOS value)
  2667.       returns AX=8087 status word
  2668.  ECh    sine(ST0)
  2669.  EEh    cosine(ST0)
  2670.  F0h    tangent(ST0)
  2671.  F2h    arctangent(ST0)
  2672.  F4h    ST0 = ln(ST0)
  2673.  F6h    ST0 = log2(ST0)
  2674.  F8h    ST0 = log10(ST0)
  2675.  FAh    ST0 = e**ST0
  2676.  FCh    ST0 = 2**ST0
  2677.  FEh    ST0 = 10**ST0
  2678. --------r-3F---------------------------------
  2679. INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
  2680. Notes:    INT 3F is the default, and may be overridden while linking
  2681.     this vector is modified but not restored by Direct Access v4.0, and
  2682.       may be left dangling by other programs written with the same version
  2683.       of compiled BASIC
  2684. SeeAlso: INT FE"OVERLAY"
  2685. --------r-3F---------------------------------
  2686. INT 3F - Microsoft Dynamic Link Library manager
  2687. SeeAlso: INT 21/AH=4Bh
  2688. --------B-40---------------------------------
  2689. INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
  2690. SeeAlso: INT 13,INT 47"SuperBIOS",INT 63
  2691. --------h-40---------------------------------
  2692. INT 40 - Z100 - Master 8259 - Parity error or S100 error
  2693. SeeAlso: INT 41"Z100",INT FF"Z100"
  2694. --------O-40---------------------------------
  2695. INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
  2696.     AL = operation
  2697.         00h close file
  2698.         40h open file for reading
  2699.         80h open file for writing
  2700.         C0h open file for random access
  2701.     DS:BX -> CR-terminated filename
  2702. Return: AL = file handle (00h if file closed or could not be opened)
  2703. Note:    the Acorn BBC Master 512 is an 80186-based add-on board for the
  2704.       6502-based Master 128 which uses the original CPU as an I/O processor
  2705. SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
  2706. --------B-41---------------------------------
  2707. INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
  2708. Note:    the default parameter table array is located at F000h:E401h in 100%
  2709.       compatible BIOSes; the pointer may be overridden by the hard disk
  2710.       controller's BIOS to support drive formats unknown to the ROM BIOS
  2711. SeeAlso: INT 13/AH=09h,INT 1E,INT 46
  2712.  
  2713. Format of fixed disk parameters:
  2714. Offset    Size    Description
  2715.  00h    WORD    number of cylinders
  2716.  02h    BYTE    number of heads
  2717.  03h    WORD    starting reduced write current cylinder (XT only, 0 for others)
  2718.  05h    WORD    starting write precompensation cylinder number
  2719.  07h    BYTE    maximum ECC burst length (XT only)
  2720.  08h    BYTE    control byte (see below)
  2721.  09h    BYTE    standard timeout (XT only, 0 for others)
  2722.  0Ah    BYTE    formatting timeout (XT and WD1002 only, 0 for others)
  2723.  0Bh    BYTE    timeout for checking drive (XT and WD1002 only, 0 for others)
  2724.  0Ch    WORD    cylinder number of landing zone (AT and later only)
  2725.  0Eh    BYTE    number of sectors per track (AT and later only)
  2726.  0Fh    BYTE    reserved
  2727.  
  2728. Bitfields for control byte:
  2729. Bit(s)    Description
  2730.  0-2    drive option (XT only, 0 for others)
  2731.  3    set if more than 8 heads (AT and later only)
  2732.  4    always 0
  2733.  5    set if manufacturer's defect map on max cylinder+1  (AT and later only)
  2734.  6    disable ECC retries
  2735.  7    disable access retries
  2736. --------h-41---------------------------------
  2737. INT 41 - Z100 - Master 8259 - Processor Swap
  2738. SeeAlso: INT 40"Z100",INT 42"Z100"
  2739. --------O-41---------------------------------
  2740. INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
  2741.     AL = function
  2742.         01h put bytes sequentially
  2743.         02h put bytes, ignoring sequential pointer
  2744.         03h get bytes sequentially
  2745.         04h get bytes, ignoring sequential pointer
  2746.         05h get media title and boot option
  2747.         06h get current device and directory
  2748.         07h get current library and device
  2749.         08h search directory
  2750.     DS:BX -> control block (see below)
  2751. Return: CF clear if successful
  2752.     CF set on error
  2753.     AL = 00h if operation attempted
  2754.     AL unchanged if unsupported function
  2755. SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
  2756.  
  2757. Format of control block:
  2758. Offset    Size    Description
  2759.  00h    BYTE    file handle
  2760.  01h    DWORD    pointer to data in either I/O processor or Tube processor
  2761.  05h    DWORD    number of bytes to be transferred
  2762.  09h    DWORD    transfer address
  2763. --------G-410000-----------------------------
  2764. INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
  2765.     AX = 0000h
  2766.     DS:DX -> character
  2767. Note:    the kernel calls this function when it wants the user program to
  2768.       output a character
  2769. SeeAlso: AX=0001h
  2770. --------G-410001-----------------------------
  2771. INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
  2772.     AX = 0001h
  2773. Return: AL = character    
  2774. Note:    the kernel calls this function when it needs to input a character
  2775. SeeAlso: AX=0000h
  2776. --------G-41000D-----------------------------
  2777. INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
  2778.     AX = 000Dh
  2779. SeeAlso: AX=000Eh
  2780. --------G-41000E-----------------------------
  2781. INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
  2782.     AX = 000Eh
  2783. SeeAlso: AX=000Dh
  2784. --------G-410012-----------------------------
  2785. INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
  2786.     AX = 0012h
  2787.     DS:SI -> string (Windows 3.0)
  2788.     ES:SI -> string (Windows 3.1)
  2789. Return: nothing???
  2790. Note:    this function is called by the kernel when it wants to output a
  2791.       string through the debugger
  2792. SeeAlso: AH=50h,INT 68/AH=47h
  2793. --------G-41004F-----------------------------
  2794. INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
  2795.     AX = 004Fh
  2796. Return: AX = F386h if debugger is present
  2797. --------G-410050-----------------------------
  2798. INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
  2799.     AX = 0050h
  2800.     BX = segment number in executable (0-based)
  2801.     CX = selector
  2802.     DX = instance handle
  2803.     SI = segment flags (0=code, 1=data)
  2804.     ES:DI -> module name of owner
  2805. Return: ???
  2806. SeeAlso: AX=0012h,AX=004Fh
  2807. --------G-410051-----------------------------
  2808. INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
  2809.     AX = 0051h
  2810.     ???
  2811. Return: ???
  2812. SeeAlso: AX=050h,AX=0052h
  2813. --------G-410052-----------------------------
  2814. INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
  2815.     AX = 0052h
  2816.     BX = freed selector
  2817. SeeAlso: AX=0050h,AX=0051h,AX=005Ch
  2818. --------G-410059-----------------------------
  2819. INT 41 CPU - MS Windows debugging kernel - LOAD TASK
  2820.     AX = 0059h
  2821.     ???:BX = CS:IP of new task's starting point
  2822. --------G-41005C-----------------------------
  2823. INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
  2824.     AX = 005Ch
  2825.     BX = freed selector
  2826. Note:    called only when KERNEL starts, once for CS and once for the DS alias
  2827.       to CS
  2828. SeeAlso: AX=0052h
  2829. --------G-410060-----------------------------
  2830. INT 41 CPU - MS Windows debugging kernel -  END OF SEGMENT LOAD
  2831.     AX = 0060h
  2832.     ???
  2833. Return: ???
  2834. SeeAlso: AX=0061h
  2835. --------G-410061-----------------------------
  2836. INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
  2837.     AX = 0061h
  2838.     ???
  2839. Return: ???
  2840. SeeAlso: AX=0060h
  2841. --------G-410062-----------------------------
  2842. INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
  2843.     AX = 0062h
  2844. STACK:    BYTE    exit code
  2845. Return: ???
  2846.     STACK unchanged???
  2847. SeeAlso: AX=0064h
  2848. --------G-410063-----------------------------
  2849. INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
  2850.     AX = 0063h
  2851. --------G-410064-----------------------------
  2852. INT 41 CPU - MS Windows debugging kernel - DLL LOADED
  2853.     AX = 0064h
  2854.     CX:BX = DLL entry point CS:IP
  2855.     SI = module handle
  2856. SeeAlso: AX=0062h,AX=0065h
  2857. --------G-410065-----------------------------
  2858. INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
  2859.     AX = 0065h
  2860.     ES = module handle
  2861. SeeAlso: AX=0064h
  2862. --------V-42---------------------------------
  2863. INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
  2864. SeeAlso: INT 10
  2865. Note:    not used by PS/2 built-in VGA or XGA
  2866. --------h-42---------------------------------
  2867. INT 42 - Z100 - Master 8259 - Timer
  2868. SeeAlso: INT 41"Z100",INT 43"Z100"
  2869. --------b-42---------------------------------
  2870. INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
  2871. Note:    if the second WD1002 controller in the system finds INT 40 already in
  2872.       use, it uses this vector to cascade to the first controller's BIOS
  2873. SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
  2874. --------O-42---------------------------------
  2875. INT 42 - Acorn BBS Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
  2876.     AL = byte to be written
  2877.     BH = file handle
  2878. Return: flags destroyed
  2879. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  2880. --------V-427503-----------------------------
  2881. INT 42 - TOSHIBA LAPTOP DISPLAY STATUS
  2882.     AX = 7503h
  2883. Return: AX = 7575h if supported
  2884.     CX = 0001h
  2885.     BH = 03h
  2886.     BL = 01h internal LCD display is active
  2887.          02h external VGA display is active
  2888.          03h both displays active ??? (not on all machines possible)
  2889. Note:    If INT 42 contains F000:F065 and F000:E010 contains "TOSHIBA",
  2890.       this call should work at least on the following machines:
  2891.       T2000, T2200SX, T3300SL, T4400SX, T5200, T3100SX, T3200SX, T6400
  2892. --------V-43---------------------------------
  2893. INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
  2894.    points at graphics data for characters 00h-7Fh of the current font
  2895. SeeAlso: INT 1F,INT 44"VIDEO"
  2896. --------h-43---------------------------------
  2897. INT 43 - Z100 - Master 8259 - Slave 8259 input
  2898. Note:    slave runs in special fully nested mode
  2899. SeeAlso: INT 42"Z100",INT 44"Z100"
  2900. --------O-43---------------------------------
  2901. INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
  2902.     BH = file handle
  2903. Return: CF clear if successful
  2904.         AL = byte read from file
  2905.     CF set on error
  2906. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
  2907. --------V-44---------------------------------
  2908. INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
  2909.    points at graphics data for current character font
  2910. SeeAlso: INT 1F,INT 43"VIDEO"
  2911. --------N-44---------------------------------
  2912. INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
  2913. --------I-44---------------------------------
  2914. INT 44 - IBM 3270-PC High Level Language API
  2915.     DS:SI -> parameter control block
  2916. --------h-44---------------------------------
  2917. INT 44 - Z100 - Master 8259 - Serial A
  2918. SeeAlso: INT 43"Z100",INT 45"Z100"
  2919. --------v-44---------------------------------
  2920. INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
  2921. SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
  2922. --------O-4400-------------------------------
  2923. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2924.     AH = 00h
  2925.     AL = function
  2926.         00h get current filing system
  2927.         Return: AL = filing system (see below)
  2928.         01h get address of commandline tail
  2929.         Return: BX buffer filled with address of command tail in I/O
  2930.                 processor address space (use INT 4A/AL=05h to
  2931.                 retrieve)
  2932.         FFh flush all files onto secondary storage
  2933.     BX -> 4-byte data buffer
  2934. Note:    the commandline tail is terminated with a carriage return (0Dh)
  2935. SeeAlso: INT 40"Acorn",INT 45"Acorn"
  2936.  
  2937. Values for filing system:
  2938.  00h    none
  2939.  01h    1200 bps cassette
  2940.  02h    300 bps cassette
  2941.  03h    ROM FS
  2942.  04h    DFS
  2943.  05h    ANFS/NFS
  2944.  06h    TFS
  2945.  08h    ADFS
  2946. --------O-44---------------------------------
  2947. INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
  2948.     AH = nonzero file handle
  2949.         AL = function
  2950.         00h get sequential pointer for file
  2951.         01h set sequential pointer for file
  2952.         02h get length of file
  2953.     BX -> 4-byte data buffer
  2954. Return: BX buffer updated if appropriate
  2955. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
  2956. --------h-45---------------------------------
  2957. INT 45 - Z100 - Master 8259 - Serial B
  2958. SeeAlso: INT 44"Z100",INT 46"Z100"
  2959. --------O-45---------------------------------
  2960. INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
  2961.     AL = function
  2962.         00h save block of memory as file
  2963.         01h update directory entry for existing file
  2964.         02h set load address for existing file
  2965.         03h set execution address for existing file
  2966.         04h set attributes for existing file
  2967.         05h read directory
  2968.         06h delete file
  2969.         FFh load file
  2970.     DS:BX -> control block (see below)
  2971. Return: FLAGS destroyed
  2972.     AL = file type
  2973.         00h not found
  2974.         01h file found
  2975.         02h directory found
  2976.         FFh protected file
  2977. SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
  2978.  
  2979. Format of control block:
  2980. Offset    Size    Description
  2981.  00h    WORD    address of CR-terminated filename
  2982.  02h    DWORD    load address of file
  2983.  06h    DWORD    execution address of file
  2984.  0Ah    DWORD    start address of data to save
  2985.  0Eh    DWORD    end address of data to save, or file attributes
  2986.         file attributes in low byte (see below)
  2987.         other three bytes are filing-system specific file attributes
  2988.  
  2989. Bitfields for file attributes:
  2990. Bit(s)    Description
  2991.  0    no owner read access
  2992.  1    no owner write access
  2993.  2    not executable by owner
  2994.  3    not deletable by owner
  2995.  4    no public read access
  2996.  5    no public write access
  2997.  6    not executable with public access
  2998.  7    not deletable with public access
  2999. --------B-46---------------------------------
  3000. INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
  3001. SeeAlso: INT 13/AH=09h,INT 41
  3002. --------h-46---------------------------------
  3003. INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
  3004. SeeAlso: INT 45"Z100",INT 47"Z100"
  3005. --------O-46---------------------------------
  3006. INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
  3007. Return: CF clear if successful
  3008.         AL = character read
  3009.     CF set on error
  3010.         AL = error code
  3011. SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
  3012. --------h-47---------------------------------
  3013. INT 47 - Z100 - Master 8259 - Printer
  3014. SeeAlso: INT 46"Z100",INT 48"Z100"
  3015. --------O-47---------------------------------
  3016. INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3017.     AL = character to be written
  3018. Return: FLAGS destroyed
  3019. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
  3020. --------b-47---------------------------------
  3021. INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
  3022. Desc:    used by the second WD1002-27X controller to cascade to the first
  3023.       controller's INT 40
  3024. SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
  3025. ----------478000-----------------------------
  3026. INT 47 - SQL Base - DATABASE ENGINE API
  3027.     AX = 8000h
  3028.     DS:BX -> parameter block, first word is function number
  3029. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3030. SeeAlso: AX=8001h
  3031.  
  3032. Values for function number:
  3033.  01h    "SQLFINI" initalialize application's use of the database
  3034.  02h    "SQLFDON" application is done using the database
  3035.  03h    "SQLFCON" connect to a cursor/database
  3036.  04h    "SQLFDIS" disconnect from a cursor/database
  3037.  05h    "SQLFCOM" compile a SQL command
  3038.  06h    "SQLFEXE" execute a SQL command
  3039.  07h    "SQLFCEX" compile and execute a SQL command
  3040.  08h    "SQLFCMT" commit a transaction to the database
  3041.  09h    "SQLFDES" describe the items of a SELECT statement
  3042.  0Ah    "SQLFGFI" get fetch information
  3043.  0Bh    "SQLFFBK" fetch previous result row from SELECT statement
  3044.  0Ch    "SQLFFET" fetch next result row from SELECT statement
  3045.  0Dh    "SQLFEFB" enable fetch backwards
  3046.  0Eh    "SQLFPRS" position in result set
  3047.  0Fh    "SQLFURS" undo result set
  3048.  10h    "SQLFNBV" get number of bind variables
  3049.  11h    "SQLFBND" bind data variables
  3050.  12h    "SQLFBNN" bind numerics
  3051.  13h    "SQLFBLN" bind long number
  3052.  14h    "SQLFBLD" bind long data variables
  3053.  15h    "SQLFSRS" start restriction set processing
  3054.  16h    "SQLFRRS" restart restriction set processing
  3055.  17h    "SQLFCRS" close restriction set
  3056.  18h    "SQLFDRS" drop restriction set
  3057.  19h    "SQLFARF" apply Roll Forward journal
  3058.  1Ah    "SQLFERF" end Roll Forward journal
  3059.  1Bh    "SQLFSRF" start Roll Forward journal
  3060.  1Ch    "SQLFSTO" store a compiled SQL command
  3061.  1Dh    "SQLFRET" retrieve a compiled SQL command
  3062.  1Eh    "SQLFDST" drop a stored command
  3063.  1Fh    "SQLFCTY" get command type
  3064.  20h    "SQLFEPO" get error position
  3065.  21h    "SQLFGNR" get number of rows
  3066.  22h    "SQLFNSI" get number of select items
  3067.  23h    "SQLFRBF" get Roll Back flag
  3068.  24h    "SQLFRCD" get return code
  3069.  25h    "SQLFROW" get number of ROWs
  3070.  26h    "SQLFSCN" set cursor name
  3071.  27h    "SQLFSIL" set isolation level
  3072.  28h    "SQLFSLP" set log parameters
  3073.  29h    "SQLFSSB" set select buffer
  3074.  2Ah    "SQLFSSS" set sort space
  3075.  2Bh    "SQLFRLO" read long
  3076.  2Ch    "SQLFWLO" write long
  3077.  2Dh    "SQLFLSK" long seek
  3078.  2Eh    "SQLFGLS" get long size
  3079.  2Fh    "SQLFELO" end long operation
  3080.  30h    "SQLFRBK" roll back a transaction from the database
  3081.  31h    "SQLFERR" error message
  3082.  32h    "SQLFCPY" copy
  3083.  33h    "SQLFR01" reserved
  3084.  34h    "SQLFSYS" system
  3085.  35h    "SQLFSTA" statistics
  3086.  36h    "SQLFR02" reserved
  3087.  37h    "SQLFXAD" extra add
  3088.  38h    "SQLFXCN" extra character to number
  3089.  39h    "SQLFXDA" extra date add
  3090.  3Ah    "SQLFXDP" extra date picture
  3091.  3Bh    "SQLFXDV" extra divide
  3092.  3Ch    "SQLFXML" extra multiply
  3093.  3Dh    "SQLFXNP" extra number picture
  3094.  3Eh    "SQLFXPD" extra picture date
  3095.  3Fh    "SQLFXSB" extra subtract
  3096.  40h    "SQLFINS" install database
  3097.  41h    "SQLFDIN" deinstall database
  3098.  42h    "SQLFDIR" directory of databases
  3099.  43h    "SQLFTIO" timeout
  3100.  44h    "SQLFFQN" get fully qualified column name
  3101.  45h    "SQLFEXP" explain execution plan
  3102.  46h    "SQLFFER" get full error
  3103.  47h    "SQLFBKP" begin online backup
  3104.  48h    "SQLFRDC" read backup data chunk
  3105.  49h    "SQLFEBK" end backup
  3106.  4Ah    "SQLFRES" begin restore from backup
  3107.  4Bh    "SQLFWDC" write backup data chunk for restore
  3108.  4Ch    "SQLFRRD" recover restored database to consistent state
  3109.  4Dh    "SQLFERS" end restore
  3110.  4Eh    "SQLFNRR" return number of result set rows
  3111.  4Fh    "SQLFSTR" start restriction mode
  3112.  50h    "SQLFSPR" stop restriction mode
  3113.  51h    "SQLFCNC" connect 2
  3114.  52h    "SQLFCNR" connect with no recovery
  3115.  53h    "SQLFOMS" set output message size
  3116.  54h    "SQLFIMS" set input message size
  3117.  55h    "SQLFSCP" set cache pages
  3118.  56h    "SQLFDSC" describe items of a SELECT statement (external)
  3119.  57h    "SQLFLAB" get label info for items in SELECT statement
  3120.  58h    "SQLFCBV" clear bind variables
  3121.  59h    "SQLFGET" get database information
  3122.  5Ah    "SQLFSET" set database information
  3123.  5Bh    "SQLFTEC" translate error code
  3124. ----------478001-----------------------------
  3125. INT 47 - SQL Base - GET VERSION NUMBER
  3126.     AX = 8001h
  3127. Return: ???
  3128. Program: SQL Base is a network-oriented database engine by Gupta Technologies
  3129. SeeAlso: AX=8000h
  3130. --------B-48---------------------------------
  3131. INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
  3132. SeeAlso: INT 49"PCjr"
  3133. --------h-48---------------------------------
  3134. INT 48 - Z100 - Slave 8259 - S100 vectored line 0
  3135. SeeAlso: INT 47"Z100",INT 49"Z100"
  3136. --------N-48---------------------------------
  3137. INT 48 - Watstar PC Network data pointer 1
  3138. SeeAlso: INT 49"Watstar"
  3139. --------O-48---------------------------------
  3140. INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
  3141. Return: FLAGS destroyed
  3142. Note:    writes a carriage return (0Dh) followed by a linefeed (0Ah)
  3143. SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
  3144. --------b-48---------------------------------
  3145. INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
  3146. Note:    the second WD1002-27X controller in a system uses the low byte to
  3147.       store the number of drives controlled by the second controller,
  3148.       and the high word for temporary storage during track recalculation;
  3149.       the first controller uses offsets 74h-77h in the BIOS data area
  3150.       (see MEMORY.LST) to store data
  3151. SeeAlso: INT 47"SuperBIOS"
  3152. --------V-48---------------------------------
  3153. INT 48 U - Compaq UILIB.EXE - API
  3154.     AX = function (see below)
  3155.     BX = call type (0002h) (see AX=1A70h)
  3156.     ???
  3157. Return: ???
  3158. Note:    returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
  3159.       listed below
  3160. SeeAlso: AX=1A70h
  3161.  
  3162. Values for function:
  3163.  1000h    1160h    12D0h    1430h    1570h    1680h    17F0h    1920h    1A90h
  3164.  1010h    1170h    12E0h    1440h    1578h    1690h    1800h    1930h    1AA0h
  3165.  1020h    1180h    12F0h    1450h    1580h    16A0h    1810h    1940h
  3166.  1030h    1190h    1300h    1460h    1590h    16B0h    1820h    1950h
  3167.  1040h    11A0h    1310h    1470h    1594h    16C0h    1830h    1960h
  3168.  1050h    11B0h    1320h    1480h    1598h    16D0h    1840h    1970h
  3169.  1060h    11C0h    1330h    1490h    15A0h    16E0h    1848h    1980h
  3170.  1070h    11D0h    1340h    14A0h    15B0h    16F0h    1850h    1990h
  3171.  1080h    11E0h    1350h    14B0h    15C0h    1700h    1860h    19A0h
  3172.  1090h    11F0h    1360h    14B8h    15D0h    1710h    1870h    19B0h
  3173.  1095h    1200h    1370h    14BBh    15D4h    1720h    1878h    19C0h
  3174.  1098h    1210h    1380h    14C0h    15D8h    1730h    1880h    19D0h
  3175.  10A0h    1220h    1390h    14D0h    15E0h    1735h    1890h    19E0h
  3176.  10C0h    1230h    13A0h    14E0h    15F0h    1740h    1898h    19F0h
  3177.  10D0h    1240h    13B0h    14F0h    1600h    1750h    18A0h    1A00h
  3178.  10E0h    1250h    13B8h    1500h    1610h    1770h    18B0h    1A10h
  3179.  10F0h    1260h    13C0h    1508h    1620h    1780h    18C0h    1A20h
  3180.  1100h    1270h    13D0h    1510h    1630h    1790h    18D0h    1A30h
  3181.  1110h    1280h    13E0h    1520h    1640h    17A0h    18E0h    1A40h
  3182.  1120h    1290h    13F0h    1530h    1650h    17B0h    18F0h    1A50h
  3183.  1130h    12A0h    1400h    1540h    1660h    17C0h    1900h    1A60h
  3184.  1140h    12B0h    1410h    1550h    1664h    17D0h    1909h    1A70h
  3185.  1150h    12C0h    1420h    1560h    1670h    17E0h    1910h    1A80h
  3186. --------V-481A70-----------------------------
  3187. INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
  3188.     AX = 1A70h
  3189.     BX = call type (see below)
  3190. Return: CX = 5649h ('VI') if installed
  3191.     DX = 4557h ('EW') if installed
  3192.         AX = version??? (0106h)
  3193.  
  3194. Values for call type:
  3195.  0000h    near
  3196.  0001h    far
  3197.  0002h    INT (only valid call type when using INT 48)
  3198.  0003h    near
  3199. --------B-49---------------------------------
  3200. INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
  3201. SeeAlso: INT 48"PCjr"
  3202.  
  3203. Format of translation table:
  3204. Offset    Size    Description
  3205.  00h    BYTE    number of nonkeyboard scancodes in the table
  3206.  01h  N WORDs    high byte 00h (NUL) byte scancode with low order byte
  3207.         representing the scancode mapped values relative to their
  3208.         input values within the range of 56h through 7Eh
  3209. --------h-49---------------------------------
  3210. INT 49 - Z100 - Slave 8259 - S100 vectored line 1
  3211. SeeAlso: INT 48"Z100",INT 4A"Z100"
  3212. --------V-49---------------------------------
  3213. INT 49 - Texas Instruments PC - VIDEO I/O???
  3214.     apparently provides direct video display on the TI Professional PC
  3215. --------N-49---------------------------------
  3216. INT 49 - Watstar PC Network data pointer 2
  3217. SeeAlso: INT 48"Watstar"
  3218. --------O-49---------------------------------
  3219. INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
  3220.     AL = character to be written
  3221. Return: FLAGS destroyed
  3222. Note:    converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
  3223. SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
  3224. --------a-490001-----------------------------
  3225. INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
  3226.     AX = 0001h
  3227. Return: AX = status (see below)
  3228.     BX,CX,DX destroyed
  3229. Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
  3230.       providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
  3231. Note:    INT 49 is the default, but may be overridden on the commandline.  The
  3232.       actual interrupt in use may be found by searching for the signature
  3233.       "MAGic" or "xMAGic" (for the deluxe version) immediately preceding
  3234.       the interrupt handler (this is also the installation check).    MAGic
  3235.       uses CodeRunneR, which places the signature "RT" at offset 0000h in
  3236.       the interrupt handler's segment, followed by MAGic's TSR ID of
  3237.       "VMAG".
  3238. SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
  3239. Index:    installation check;MAGic
  3240.  
  3241. Values for status:
  3242.  0000h    cannot magnify current video mode
  3243.  0002h    magnified (text mode)
  3244.  0003h    magnified (graphics mode)
  3245.  FFFDh    function works only in magnified mode
  3246.  FFFFh    MAGic busy, retry later
  3247. --------a-490002-----------------------------
  3248. INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
  3249.     AX = 0002h
  3250. Return: AX = status (see AX=0001h)
  3251.     BX,CX,DX destroyed
  3252. SeeAlso: AX=0001h
  3253. --------a-490003-----------------------------
  3254. INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
  3255.     AX = 0003h
  3256.     BX = vertical position (character row [text] or pixel row [graphics])
  3257.     DX = horizontal position (char column [text] or 8-pixel units [gr])
  3258. Return: AX = status
  3259.         0000h successful
  3260.         FFFFh MAGic busy, retry later
  3261.     BX,CX,DX destroyed
  3262. Note:    window is not moved if the position is inside the current window
  3263. SeeAlso: AX=0001h,AX=0004h,AX=0005h
  3264. --------a-490004-----------------------------
  3265. INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
  3266.     AX = 0004h
  3267.     BX = vertical position of upper left corner
  3268.     DX = horizontal position
  3269. Return: AX = status (see AX=0003h)
  3270.     BX,CX,DX destroyed
  3271. SeeAlso: AX=0001h,AX=0003h,AX=0005h
  3272. --------a-490005-----------------------------
  3273. INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
  3274.     AX = 0005h
  3275. Return: AX = status
  3276.         0000h successful
  3277.         BX = vertical position (char row or pixel row)
  3278.         DX = horizontal position (char column or 8-pixel units)
  3279.         FFFFh MAGic busy, retry later
  3280.         BX,DX destroyed
  3281.     CX destroyed
  3282. SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
  3283. --------a-490006-----------------------------
  3284. INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
  3285.     AX = 0006h
  3286. Return: AX = status
  3287.         0000h successful
  3288.         BX = vertical size (char rows or pixel rows)
  3289.         DX = horizontal size (char cols or 8-pixel units)
  3290.         FFFFh MAGic busy, retry later
  3291.         BX,DX destroyed
  3292.     CX destroyed
  3293. SeeAlso: AX=0001h,AX=0005h,AX=0007h
  3294. --------a-490007-----------------------------
  3295. INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
  3296.     AX = 0007h
  3297. Return: AX = status
  3298.         0000h successful
  3299.         BX = vertical size (char rows or pixel rows)
  3300.         DX = horizontal size (char cols or 8-pixel units)
  3301.         FFFEh invalid function
  3302.         FFFFh MAGic busy, retry later
  3303.         BX,DX destroyed
  3304.     CX destroyed
  3305. BUG:    in v1.16 and v1.17, this function is not recognized as valid, but
  3306.       AX=0000h is accepted and will branch into hyperspace
  3307. SeeAlso: AX=0001h,AX=0006h
  3308. --------a-490008-----------------------------
  3309. INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
  3310.     AX = 0008h
  3311.     BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
  3312. Return: AX = status
  3313.         0000h successful
  3314.         FFFBh scaling factor only available in MAGic Deluxe
  3315.         FFFCh already in magnified state, can't set size
  3316. Notes:    this call specifies the amount a subsequent call to AX=0001h should
  3317.       magnify the display
  3318.     scaling factors greater than 2 are only available in MAGic Deluxe
  3319. SeeAlso: AX=0001h
  3320. --------B-4A---------------------------------
  3321. INT 4A C - SYSTEM - USER ALARM HANDLER
  3322. Desc:    This interrupt is invoked by the BIOS when a real-time clock alarm
  3323.       occurs; an application may use it to perform an action at a
  3324.       predetermined time.
  3325. Note:    this interrupt is called from within a hardware interrupt handler,
  3326.       so all usual precautions against reentering DOS must be taken
  3327. SeeAlso: INT 1A/AH=06h
  3328. --------h-4A---------------------------------
  3329. INT 4A - Z100 - Slave 8259 - S100 vectored line 2
  3330. SeeAlso: INT 49"Z100",INT 4B"Z100"
  3331. --------O-4A---------------------------------
  3332. INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
  3333.     AL = function code
  3334.         FAh transfer data between 80186 and 65C12 I/O processor
  3335.     DS:BX -> control block (see below)
  3336. Return: FLAGS destroyed
  3337.     control block updated
  3338. Note:    there are more functions than are listed here, but details are not
  3339.       available
  3340. SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
  3341.  
  3342. Format of control block for function FAh:
  3343. Offset    Size    Description
  3344.  00h    BYTE    number of parameters sent to I/O processor (0Dh,0Eh)
  3345.  01h    BYTE    number of parameters read from I/O processor (01h)
  3346.  02h    DWORD    I/O processor address
  3347.  06h    DWORD    80186 segment:offset address
  3348.  0Ah    WORD    number of bytes to transfer
  3349.  0Ch    BYTE    operation type
  3350.         00h write to 65C12 at 24 us/byte
  3351.         01h read from 65C12 at 24 us/byte
  3352.         02h write to 65C12 at 26 us/word
  3353.         03h read from 65C12 at 26 us/word
  3354.         04h write to 65C12 at 10 us/byte using 256-byte blocks
  3355.         05h read from 65C12 at 10 us/byte using 256-byte blocks
  3356.  0Dh    BYTE    65C12 memory access control (only used if offset 00h = 0Eh)
  3357.         (see below)
  3358.  
  3359. Bitfields for 65C12 memory access control:
  3360. Bit(s)    Description
  3361.  7    unused
  3362.  6    always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
  3363.  5    use shadow screen memory if screen address specified
  3364.  4    use current ROM rather than ROM selected by bits 3-0 (only if I/O
  3365.       address between 8000h and BFFFh)
  3366.  3-0    paged ROM number
  3367. --------h-4B---------------------------------
  3368. INT 4B - Z100 - Slave 8259 - S100 vectored line 3
  3369. SeeAlso: INT 4A"Z100",INT 4C"Z100"
  3370. --------d-4B---------------------------------
  3371. INT 4B - Common Access Method SCSI interface (draft revision 1.9)
  3372.     ES:DI -> CAM Control Block (see INT 4F/AX=8100h)
  3373. Notes:    the CAM committee moved the interface to INT 4F after revision 1.9
  3374.       to avoid conflicting with the IBM SCSI interface and the Virtual
  3375.       DMA specification
  3376.     the installation check for the driver is the string "SCSI_CAM" eight
  3377.       bytes past the INT 4Bh handler
  3378.     the only driver to date reported to use the CAM interface on INT 4B
  3379.       instead of INT 4F is from Future Domain (which has drivers for CAM
  3380.       on either interrupt)
  3381. SeeAlso: INT 4F/AX=8100h
  3382. Index:    installation check;Common Access Method SCSI interface
  3383. --------O-4B---------------------------------
  3384. INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
  3385.     AL = function code
  3386.     BL = first parameter
  3387.     BH = second parameter (if needed)
  3388. Return: BL = first return parameter
  3389.     BH = second return parameter
  3390.     CF depends on function
  3391. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
  3392. --------d-4B80-------------------------------
  3393. INT 4B - IBM SCSI interface
  3394.     AH = 80h
  3395.     details not yet available
  3396. --------d-4B8102DX0000-----------------------
  3397. INT 4B - Virtual DMA Specification (VDS) - GET VERSION
  3398.     AX = 8102h
  3399.     DX = 0000h
  3400. Return: CF clear if successful
  3401.         AH = major version number
  3402.         AL = minor version number
  3403.         BX = product number (see below)
  3404.         CX = product revision number
  3405.         always 0000h for QMAPS and HPMM.SYS
  3406.         always 0001h for Microsoft's EMM386.EXE v4.20-4.41
  3407.            DX = flags (see below)
  3408.         SI:DI = maximum DMA buffer size
  3409.     CF set on error
  3410.         AL = error code (see below)
  3411. Note:    bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
  3412.       apparently not always the case
  3413. SeeAlso: INT 2C/AX=002Bh,INT 31
  3414. Index:    installation check;Virtual DMA Spec
  3415.  
  3416. Values for product number:
  3417.  0000h    for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
  3418.  0001h    for Microsoft's EMM386.EXE
  3419.  0003h    for Windows 3.x WIN386.EXE
  3420.  0EDCh    for DR-DOS 6.0 EMM386.SYS
  3421.  4560h    ("E`") for Qualitas' 386MAX
  3422.  4D43h    ("MC") for V Communication's Memory Commander
  3423.  5145h    ("QE") for Quarterdeck's QEMM-386
  3424.  524Dh    ("RM") for Helix's Netroom RM386
  3425.  
  3426. Values for error code:
  3427.  01h    region not in contiguous memory
  3428.  02h    region crossed a physical alignment boundary
  3429.  03h    unable to lock pages
  3430.  04h    no buffer available
  3431.  05h    region too large for buffer
  3432.  06h    buffer currently in use
  3433.  07h    invalid memory region
  3434.  08h    region was not locked
  3435.  09h    number of physical pages greater than table length
  3436.  0Ah    invalid buffer ID
  3437.  0Bh    copy out of buffer range
  3438.  0Ch    invalid DMA channel number
  3439.  0Dh    disable count overflow
  3440.  0Eh    disable count underflow
  3441.  0Fh    function not supported
  3442.  10h    reserved flag bits set in DX
  3443.  
  3444. Bitfields for flags:
  3445. Bit(s)    Description
  3446.  0    PC/XT bus (DMA in first megabyte only)
  3447.  1    physical buffer/remap region in first megabyte
  3448.  2    automatic remap enabled
  3449.  3    all memory is physically contiguous
  3450.  4-15    reserved (zero)
  3451.  
  3452. Format of DMA descriptor structure (DDS):
  3453. Offset    Size    Description
  3454.  00h    DWORD    region size
  3455.  04h    DWORD    offset
  3456.  08h    WORD    segment/selector
  3457.  0Ah    WORD    buffer ID
  3458.  0Ch    DWORD    physical address
  3459.  
  3460. Format of Extended DMA descriptor structure (EDDS):
  3461. Offset    Size    Description
  3462.  00h    DWORD    region size
  3463.  04h    DWORD    offset
  3464.  08h    WORD    segment/selector
  3465.  0Ah    WORD    reserved
  3466.  0Ch    WORD    number available
  3467.  0Eh    WORD    number used
  3468.  10h    DWORD    region 0 physical address
  3469.  14h    DWORD    region 0 size in bytes
  3470.  18h    DWORD    region 1 physical address
  3471.  1Ch    DWORD    region 1 size in bytes
  3472.     ...
  3473.  
  3474. Format of Extended DMA descriptor structure (EDDS) with page table entries:
  3475. Offset    Size    Description
  3476.  00h    DWORD    region size
  3477.  04h    DWORD    offset
  3478.  08h    WORD    segment/selector
  3479.  0Ah    WORD    reserved
  3480.  0Ch    WORD    number available
  3481.  0Eh    WORD    number used
  3482.  10h    DWORD    page table entry 0 (same as 80386 page table entry)
  3483.  14h    DWORD    page table entry 1
  3484.     ...
  3485. Note:    bits 1-11 of the page table entries should be zero; bit 0 set if page
  3486.       is present and locked
  3487. --------d-4B8103-----------------------------
  3488. INT 4B - Virtual DMA Specification - LOCK DMA REGION
  3489.     AX = 8103h
  3490.     DX = flags (see below)
  3491.     ES:DI -> DMA descriptor structure (see AX=8102h)
  3492. Return: CF clear if successful
  3493.         DDS physical address field filled in
  3494.         DDS buffer ID field filled (0000h if no buffer allocated)
  3495.     CF set on error
  3496.         AL = error code (see AX=8102h)
  3497.         DDS region size field filled wth maximum contiguous length in bytes
  3498. BUGS:    Windows 3.0 does not correctly support automatic remapping or copying
  3499.       in enhanced mode
  3500.     Windows 3.0 in enhanced mode does not return a correct code on error
  3501. SeeAlso: AX=8104h,AX=8105h
  3502.  
  3503. Bitfields for flags:
  3504. Bit(s)    Description
  3505.  0    reserved (zero)
  3506.  1    data should be copied into buffer (ignored if 2 set)
  3507.  2    buffer should not be allocated if region noncontiguous or crosses
  3508.       physical alignment boundary specified by 4-5
  3509.  3    don't attempt automatic remap
  3510.  4    region must not cross 64K physical alignment boundary
  3511.  5    region must not cross 128K physical alignment boundary
  3512.  6-15    reserved (zero)
  3513. --------d-4B8104-----------------------------
  3514. INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
  3515.     AX = 8104h
  3516.     DX = flags
  3517.         bit 0: reserved (zero)
  3518.         bit 1: data should be copied out of buffer
  3519.         bits 2-15 reserved (zero)
  3520.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size,
  3521.         physical address, and buffer ID fields set
  3522. Return: CF clear if successful
  3523.         DDS physical address field set
  3524.         DDS buffer ID field set (0000h if no buffer allocated)
  3525.     CF set on error
  3526.         AL = error code (see AX=8102h)
  3527.         DDS region size field filled wth maximum contiguous length in bytes
  3528. Note:    Windows 3.0 does not check whether the region extends beyond the end of
  3529.       a segment
  3530. BUG:    Windows 3.0 in enhanced mode does not return a correct code on error
  3531. SeeAlso: AX=8103h,AX=8106h
  3532. --------d-4B8105-----------------------------
  3533. INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
  3534.     AX = 8105h
  3535.     DX = flags
  3536.         bits 0-5 reserved (zero)
  3537.         bit 6: EDDS should be returned with page table entries
  3538.         bit 7: only present pages should be locked (not-present pages
  3539.             receive entry of 0000h)
  3540.         bits 8-15 reserved (zero)
  3541.     ES:DI -> Extended DMA descriptor structure (see AX=8102h)
  3542.         region size, linear segment, linear offset, and number avail
  3543.         fields set
  3544. Return: CF clear if successful
  3545.         EDDS number used field set
  3546.         if DX bit 6 set, lower 12 bits of BX = offset in first page
  3547.     CF set on error
  3548.         AL = error code (see AX=8102h)
  3549.         EDDS region size field filled with max length in bytes that can be
  3550.         locked and described in the EDDS table
  3551. BUG:    Windows 3.0 in enhanced mode may return zero instead of the physical
  3552.       page address for pages which were originally not present
  3553. SeeAlso: AX=8103h,AX=8106h
  3554. --------d-4B8106-----------------------------
  3555. INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
  3556.     AX = 8106h
  3557.     DX = flags
  3558.         bits 0-5 reserved (zero)
  3559.         bit 6: EDDS contains page table entries
  3560.         bit 7: EDDS may contain not-present pages (entry = 0000h)
  3561.         bits 8-15 reserved (zero)
  3562.     ES:DI -> Extended DMA descriptor structure (see AX=8102h) returned
  3563.         by AX=8105h
  3564. Return: CF clear if successful
  3565.     CF set on error
  3566.         AL = error code (see AX=8102h)
  3567. Note:    according to the Microsoft version of the VDS specification, the
  3568.       actual scatter/gather list is ignored, while according to the IBM
  3569.       version of the specification, "the result of a LOCK operation"
  3570.       must be provided to this function
  3571. SeeAlso: AX=8104h,AX=8105h
  3572. --------d-4B8107-----------------------------
  3573. INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
  3574.     AX = 8107h
  3575.     DX = flags
  3576.         bit 0: reserved (zero)
  3577.         bit 1: data should be copied into buffer
  3578.         bits  2-15 reserved (zero)
  3579.     ES:DI -> DMA descriptor structure (see AX=8102h) with region size set
  3580.         (also region offset and region segment if DX bit 1 set)
  3581. Return: CF clear if successful
  3582.         DDS physical address and buffer ID set
  3583.         DDS region size filled with length of buffer
  3584.     CF set on error
  3585.         AL = error code (see AX=8102h)
  3586. SeeAlso: AX=8108h
  3587. --------d-4B8108-----------------------------
  3588. INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
  3589.     AX = 8108h
  3590.     DX = flags
  3591.         bit 0: reserved (zero)
  3592.         bit 1: data should be copied out of buffer
  3593.         bits 2-15 reserved (zero)
  3594.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID set
  3595.         (also region size/region offset/segment if DX bit 1 set)
  3596. Return: CF clear if successful
  3597.     CF set on error
  3598.         AL = error code (see AX=8102h)
  3599. BUG:    under Windows 3.0 Enhanced mode, you must specify that data be copied
  3600.       for this function to work correctly
  3601. SeeAlso: AX=8107h
  3602. --------d-4B8109DX0000-----------------------
  3603. INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
  3604.     AX = 8109h
  3605.     DX = 0000h
  3606.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3607.         region segment/offset, and region size fields set
  3608.     BX:CX = starting offset into DMA buffer
  3609. Return: CF clear if successful
  3610.     CF set on error
  3611.         AL = error code (see AX=8102h)
  3612. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3613. SeeAlso: AX=810Ah
  3614. --------d-4B810ADX0000-----------------------
  3615. INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
  3616.     AX = 810Ah
  3617.     DX = 0000h
  3618.     ES:DI -> DMA descriptor structure (see AX=8102h) with buffer ID,
  3619.         region segment/offset, and region size fields set
  3620.     BX:CX = starting offset into DMA buffer
  3621. Return: CF clear if successful
  3622.     CF set on error
  3623.         AL = error code (see AX=8102h)
  3624. BUG:    Windows 3.0 Enhanced mode does not correctly interpret the copy count
  3625. SeeAlso: AX=8109h
  3626. --------d-4B810B-----------------------------
  3627. INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
  3628.     AX = 810Bh
  3629.     BX = DMA channel number
  3630.     DX = 0000h
  3631. Return: CF clear if successful
  3632.     CF set on error
  3633.         AL = error code (see AX=8102h)
  3634. SeeAlso: AX=810Ch
  3635. --------d-4B810C-----------------------------
  3636. INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
  3637.     AX = 810Ch
  3638.     BX = DMA channel number
  3639.     DX = 0000h
  3640. Return: CF clear if successful
  3641.         ZF set if disable count decremented to zero
  3642.     CF set on error
  3643.         AL = error code (see AX=8102h)
  3644. SeeAlso: AX=810Bh
  3645. --------Q-4B810D-----------------------------
  3646. INT 4B - QEMM-386 - BUG
  3647.     AX = 810Dh
  3648. Note:    the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
  3649.       call
  3650. --------h-4C---------------------------------
  3651. INT 4C - Z100 - Slave 8259 - S100 vectored line 4
  3652. SeeAlso: INT 4B"Z100",INT 4D"Z100"
  3653. --------O-4C---------------------------------
  3654. INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
  3655.     DS:BX -> CR-terminated command string
  3656. Return: FLAGS destroyed
  3657. SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
  3658. --------h-4D---------------------------------
  3659. INT 4D - Z100 - Slave 8259 - S100 vectored line 5
  3660. SeeAlso: INT 4C"Z100",INT 4E"Z100"
  3661. --------d-4E---------------------------------
  3662. INT 4E - TI Professional PC - DISK I/O
  3663.     used instead of INT 13 on the TI Professional PC
  3664. SeeAlso: INT 13
  3665. --------h-4E---------------------------------
  3666. INT 4E - Z100 - Slave 8259 - S100 vectored line 6
  3667. SeeAlso: INT 4D"Z100",INT 4F"Z100"
  3668. --------h-4F---------------------------------
  3669. INT 4F - Z100 - Slave 8259 - S100 vectored line 7
  3670. SeeAlso: INT 4E"Z100"
  3671. --------d-4F8100-----------------------------
  3672. INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
  3673.     AX = 8100h
  3674.     ES:BX -> CAM Control Block (CCB) (see below)
  3675. Return: AH = status
  3676.         00h successful
  3677.         01h invalid CCB address (0000h:0000h)
  3678. Note:    the SCSI Interface Module (SIM) may complete the requested function
  3679.       and invoke the completion callback function before this call returns
  3680. SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
  3681.  
  3682. Values for CAM function code:
  3683.  00h    NOP
  3684.  01h    execute SCSI I/O
  3685.  02h    get device type
  3686.  03h    path inquiry
  3687.  04h    release SIM queue
  3688.  05h    set async callback
  3689.  06h    set device type
  3690.  07h-0Fh reserved
  3691.  10h    abort SCSI command
  3692.  11h    reset SCSI bus
  3693.  12h    reset SCSI device
  3694.  13h    terminate I/O process
  3695.  14h-1Fh reserved
  3696.  20h    engine inquiry
  3697.  21h    execute engine request
  3698.  22h-2Fh reserved
  3699.  30h    enable logical unit number
  3700.  31h    execute target I/O
  3701.  32h-7Fh reserved
  3702.  80h-FFh vendor-specific functions
  3703.  
  3704. Format of CAM Control Block:
  3705. Offset    Size    Description
  3706.  00h    DWORD    physical address of this CCB
  3707.  04h    WORD    CAM control block length
  3708.  06h    BYTE    function code (see above)
  3709.  07h    BYTE    CAM status (see below)
  3710.  08h    BYTE    SCSI status
  3711.  09h    BYTE    path ID (FFh = XPT)
  3712.  0Ah    BYTE    target ID
  3713.  0Bh    BYTE    logical unit number
  3714.  0Ch    WORD    CAM flags (see below)
  3715.  0Eh    BYTE    CAM address flags (see below)
  3716.  0Fh    BYTE    target-mode flags (see below)
  3717. ---function 02h---
  3718.  10h    DWORD    pointer to 36-byte buffer for inquiry data or 0000h:0000h
  3719.  14h    BYTE    peripheral device type of target logical unit number
  3720. ---function 03h---
  3721.  10h    BYTE    version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
  3722.         09h-FFh = rev no, i.e. 23h = rev 2.3)
  3723.  11h    BYTE    SCSI capabilities (see below)
  3724.  12h    BYTE    target mode support
  3725.         bit 7: processor mode
  3726.         bit 6: phase-cognizant mode
  3727.         bit 5-0: reserved
  3728.  13h    BYTE    miscellaneous flags
  3729.         bit 7: scanned high to low instead of low to high
  3730.         bit 6: removables not included in scan
  3731.         bit 5: inquiry data not kept by XPT
  3732.         bits 4-0: reserved
  3733.  14h    WORD    engine count
  3734.  16h 14 BYTEs    vendor-specific data
  3735.  24h    DWORD    size of private data area
  3736.  28h    DWORD    asynchronous event capabilities (see below)
  3737.  2Ch    BYTE    highest path ID assigned
  3738.  2Dh    BYTE    SCSI device ID of initiator
  3739.  2Eh  2 BYTEs    reserved
  3740.  30h 16 BYTEs    SIM vendor ID
  3741.  40h 16 BYTEs    HBA (host bus adaptor) vendor ID
  3742.  50h  4 BYTEs    operating-system dependant usage
  3743. ---functions 00h,04h,11h,12h---
  3744.  no additional fields
  3745. ---function 05h---
  3746.  10h    DWORD    asynchronous event enables (see function 03h above)
  3747.  14h    DWORD    pointer to asynchronous callback routine
  3748.  18h    DWORD    pointer to peripheral driver buffer
  3749.  1Ch    BYTE    size of peripheral buffer
  3750. ---function 06h---
  3751.  10h    BYTE    peripheral device type of target
  3752. ---functions 10h,13h---
  3753.  10h    DWORD    pointer to CCB to be aborted
  3754. ---function 20h---
  3755.  10h    WORD    engine number
  3756.  12h    BYTE    engine type
  3757.         00h buffer memory
  3758.         01h lossless compression
  3759.         02h lossy compression
  3760.         03h encryption
  3761.  13h    BYTE    engine algorithm ID
  3762.         00h vendor-unique
  3763.         01h LZ1 variation 1 (STAC)
  3764.         02h LZ2 variation 1 (HP DCZL)
  3765.         03h LZ2 variation 2 (Infochip)
  3766.  14h    DWORD    engine memory size
  3767. ---function 21h---
  3768.  10h    DWORD    pointer to peripheral driver
  3769.  14h  4 BYTEs    reserved
  3770.  18h    DWORD    OS-dependent request-mapping info
  3771.  1Ch    DWORD    address of completion callback routine
  3772.  20h    DWORD    pointer to scatter/gather list or data buffer
  3773.  24h    DWORD    length of data transfer
  3774.  28h    DWORD    pointer to engine buffer data
  3775.  2Ch  2 BYTEs    reserved
  3776.  2Eh    WORD    number of scatter/gather entries
  3777.  30h    DWORD    maximum destination data length
  3778.  34h    DWORD    length of destination data
  3779.  38h    DWORD    source residual length
  3780.  3Ch 12 BYTEs    reserved
  3781.  48h    DWORD    OS-dependent timeout value
  3782.  4Ch  4 BYTEs    reserved
  3783.  50h    WORD    engine number
  3784.  52h    WORD    vendor-unique flags
  3785.  54h  4 BYTEs    reserved
  3786.  58h  N BYTEs    private data area for SIM
  3787. ---function 30h---
  3788.  10h    WORD    group 6 vendor-unique CDB length
  3789.  12h    WORD    group 7 vendor-unique CDB length
  3790.  14h    DWORD    pointer to target CCB list
  3791.  18h    WORD    number of target CCBs
  3792. ---other functions---
  3793.  10h    DWORD    pointer to peripheral driver
  3794.  14h    DWORD    pointer to next CCB
  3795.  18h    DWORD    OS-dependent request mapping information
  3796.  1Ch    DWORD    address of completion callback routine
  3797.  20h    DWORD    pointer to scatter/gather list or data buffer
  3798.  24h    DWORD    length of data transfer
  3799.  28h    DWORD    pointer to sense info buffer
  3800.  2Ch    BYTE    length of sense info buffer
  3801.  2Dh    BYTE    CDB length
  3802.  2Eh    WORD    number of scatter/gather entries
  3803.  30h  4 BYTEs    reserved
  3804.  34h    BYTE    SCSI status
  3805.  35h  3 BYTEs    reserved
  3806.  38h    DWORD    residual length
  3807.  40h 12 BYTEs    Command Descriptor Block (CDB)
  3808.  44h    DWORD    OS-dependent timeout value
  3809.  48h    DWORD    pointer to message buffer
  3810.  4Ch    WORD    length of message buffer
  3811.  4Eh    WORD    vendor-unique flags
  3812.  50h    BYTE    tag queue action
  3813.  51h  3 BYTEs    reserved
  3814.  54h  N BYTEs    private data area for SIM
  3815.  
  3816. Bitfields for CAM flags:
  3817. Bit(s)    Description
  3818.  0    CDB is a pointer
  3819.  1    tagged queue action enable
  3820.  2    linked CDB
  3821.  3    disable callback on completion
  3822.  4    scatter/gather
  3823.  5    disable autosense
  3824.  7-6    direction (00 reserved, 01 in, 10 out, 11 no data transfer)
  3825.  9-8    reserved
  3826.  10    engine synchronize
  3827.  11    SIM queue freeze
  3828.  12    SIM queue priority
  3829.     1 head insertion
  3830.     0 tail insertion (normal)
  3831.  13    disable synchronous transfers    / exclusive
  3832.  14    initiate synchronous transfers    \ mutually
  3833.  15    disable disconnect
  3834.  
  3835. Bitfields for CAM address flags:
  3836. Bit(s)    Description
  3837.  7    SG list/data (0 = host, 1 = engine)
  3838.  6    CDB pointer    (6-1: 0=virtual addr, 1=phys addr)
  3839.  5    SG list/data
  3840.  4    sense buffer
  3841.  3    message buffer
  3842.  2    next CCB
  3843.  1    callback on completion
  3844.  0    reserved
  3845.  
  3846. Values for CAM status:
  3847.  00h    request in progress
  3848.  01h    request successful
  3849.  02h    host aborted request
  3850.  03h    unable to abort request
  3851.  04h    request completed with error
  3852.  05h    CAM is busy
  3853.  06h    invalid request
  3854.  07h    invalid path ID
  3855.  08h    no such SCSI device
  3856.  09h    unable to terminate I/O process
  3857.  0Ah    timeout on target selection
  3858.  0Bh    timeout on command
  3859.  0Dh    receive message rejection
  3860.  0Eh    sent/received SCSI bus reset
  3861.  0Fh    detected uncorrectable parity error
  3862.  10h    Autosense request failed
  3863.  11h    no HBA detected
  3864.  12h    data over/underrun
  3865.  13h    bus freed unexpectedly
  3866.  14h    target bus phase sequence failure
  3867.  15h    CCB too small
  3868.  16h    requested capability not available
  3869.  17h    sent bus device reset
  3870.  18h    terminate I/O process
  3871.  38h    invalid LUN
  3872.  39h    invalid target ID
  3873.  3Ah    unimplemented function
  3874.  3Bh    nexus not established
  3875.  3Ch    invalid initiator ID
  3876.  3Dh    received SCSI Command Descriptor Block
  3877.  3Eh    LUN already enabled
  3878.  3Fh    SCSI bus busy
  3879. Note:    bit 6 set to indicate frozen SIM queue
  3880.     bit 7 set to indicate valid autosense
  3881.  
  3882. Bitfields for target-mode flags:
  3883. Bit(s)    Description
  3884.  7    data buffer valid
  3885.  6    status valid
  3886.  5    message buffer valid
  3887.  4    reserved
  3888.  3    phase-cognizant mode
  3889.  2    target CCB available
  3890.  1    disable autodisconnect
  3891.  0    disable autosave/restore
  3892.  
  3893. Bitfields for SCSI capabilities:
  3894. Bit(s)    Description
  3895.  7    modify data pointers
  3896.  6    wide bus (32 bits)
  3897.  5    wide bus (16 bits)
  3898.  4    synchronous transfers
  3899.  3    linked commands
  3900.  2    reserved
  3901.  1    tagged queueing
  3902.  0    soft reset
  3903.  
  3904. Bitfields for asynchronous event capabilities:
  3905. Bit(s)    Description
  3906.  31-24    vendor-specific
  3907.  23-8    reserved
  3908.  7    new devices found during rescan
  3909.  6    SIM module deregistered
  3910.  5    SIM module registered
  3911.  4    sent bus device reset to target
  3912.  3    SCSI AEN
  3913.  2    reserved
  3914.  1    unsolicited reselection
  3915.  0    unsolicited SCSI bus reset
  3916.  
  3917. Completion callback function called with:
  3918.     interrupts disabled
  3919.     ES:BX -> completed CCB
  3920.  
  3921. Asynchronous callback function called with:
  3922.     AH = opcode
  3923.     AL = path ID generating callback
  3924.     DH = target ID causing event
  3925.     DL = LUN causing event
  3926.     CX = data byte count (if applicable)
  3927.     ES:BX -> data buffer (if applicable)
  3928. Return: all registers preserved
  3929. --------d-4F8200CX8765-----------------------
  3930. INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
  3931.     AX = 8200h
  3932.     CX = 8765h
  3933.     DX = CBA9h
  3934. Return: AH = 00h if installed
  3935.         CX = 9ABCh
  3936.         DX = 5678h
  3937.         ES:DI -> "SCSI_CAM"
  3938. SeeAlso: AX=8100h,INT 4B"Common Access Method"
  3939. --------N-50---------------------------------
  3940. INT 50 - TIL Xpert AIM (X.25)
  3941.     AH = function
  3942. --------H-50---------------------------------
  3943. INT 50 - IRQ0 relocated by DESQview
  3944. Notes:    this is the default location for older versions; DESQview v2.26+
  3945.       searches for unused ranges of interrupts and uses the lowest
  3946.       available range in its list for relocating these IRQs and the next
  3947.       lowest for relocating IRQ8-IRQ15
  3948.     a range of eight interrupts starting at a multiple of 8 is considered
  3949.       available if all vectors are identical and it has not been excluded
  3950.       with an /XB:nn commandline switch
  3951.     the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
  3952.       are available, F8h and then 50h are used anyway)
  3953.     the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
  3954.       are available, F8h and then F0h are used anyway)
  3955. SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
  3956. SeeAlso: INT D8"Screen Thief"
  3957. --------H-50---------------------------------
  3958. INT 50 - IRQ0 relocated by IBM 3278 emulation control program
  3959. SeeAlso: INT 51"IBM 3278"
  3960. --------H-50---------------------------------
  3961. INT 50 - IRQ0 relocated by OS/2 v1.x
  3962. SeeAlso: INT 51"OS/2"
  3963. --------V-500000-----------------------------
  3964. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
  3965.     AX = 0000h
  3966.     ES:BX -> name string or ES:0000h if none
  3967.     CH,CL = row,column of upper left corner
  3968.     DH,DL = row,column of lower right corner
  3969. Return: AX = window handle or
  3970.         0000h if not installed
  3971.         FFFFh on error
  3972. SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
  3973. --------V-500001-----------------------------
  3974. INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
  3975.     AX = 0001h
  3976.     DI = window handle
  3977. SeeAlso: AX=0000h
  3978. --------V-500002-----------------------------
  3979. INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
  3980.     AX = 0002h
  3981.     BL = character
  3982.     BH = attribute
  3983.     DL = column
  3984.     DH = row
  3985.     DI = window handle
  3986. Return: AX = status
  3987.         0000h if successful
  3988.         FFFFh if outside window
  3989. SeeAlso: AX=0000h
  3990. --------l-500002-----------------------------
  3991. INT 50 - PC Thuis Organizer Shell - PLOT TEXT
  3992.     AX = 0002h
  3993.     ES:BX -> text string
  3994.     DH,DL = row,column of upper left corner
  3995.     DI = window handle
  3996. Return: AX = status
  3997.         0000h successful (text fits in window)
  3998.         FFFFh error
  3999. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4000.       published in the June/July 1990 issue of PC Thuis Power magazine
  4001. --------V-500003-----------------------------
  4002. INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
  4003.     AX = 0003h
  4004.     ES:BX -> text string
  4005.     CX = string length (0000h if ASCIZ string)
  4006.     DL = position (FFh centered, else flush left)
  4007.     DH = starting row
  4008.     DI = window handle
  4009. Return: AX = status
  4010.         0000h successful
  4011.         FFFFh did not fit in window
  4012. --------l-500003-----------------------------
  4013. INT 50 - PC Thuis Organizer Shell - WRITE FILE
  4014.     AX = 0003h
  4015.     ES:BX -> data to be written
  4016.     CX = number of bytes to write
  4017.     DS:SI -> filename
  4018. Return: AX = status
  4019.         0000h successful
  4020.         FFFFh error
  4021. SeeAlso: AX=0004h"Shell"
  4022. --------V-500004-----------------------------
  4023. INT 50 - Vanderaart TEXT WINDOWS - GET KEY
  4024.     AX = 0004h
  4025.     CH = type
  4026.         00h any key
  4027.         01h 'J' or 'N' (Dutch for yes/no)
  4028. Return: AX = key
  4029. SeeAlso: INT 16/AH=00h
  4030. --------l-500004-----------------------------
  4031. INT 50 - PC Thuis Organizer Shell - READ FILE
  4032.     AX = 0004h
  4033.     ES:BX -> buffer for data
  4034.     CX = number of bytes to read or 0000h for entire file
  4035.     DL = file type
  4036.         01h setting shell
  4037.         02h setting sterm
  4038.         03h INT21 file
  4039.     DS:SI -> filename
  4040. Return: AX = status
  4041.         0000h successful
  4042.         FFFFh error
  4043. Note:    file type numbers are maintained by John Vanderaart; if a new file type
  4044.       is needed, a type number should be requested from him through the
  4045.       magazine:
  4046.         PC Thuis BV
  4047.         Spaarne 55
  4048.         2011 CE HAARLEM
  4049.         The Netherlands
  4050. SeeAlso: AX=0003h"Shell"
  4051. --------V-500005-----------------------------
  4052. INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
  4053.     AX = 0005h
  4054.     BL = new attribute
  4055.     CH,CL = row,column of upper left corner
  4056.     DH,DL = row,column of lower right corner
  4057.     DI = window handle
  4058. --------l-500005-----------------------------
  4059. INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
  4060.     AX = 0005h
  4061.     ES:BX -> prompt string (ES:0000h if no prompt)
  4062. Return: AX = key pressed
  4063.         0000h "J" (Dutch "Ja" = "Yes")
  4064.         FFFFh "N" (Dutch "Nee" = "No")
  4065. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4066.       published in the June/July 1990 issue of PC Thuis Power magazine
  4067. SeeAlso: AX=0008h"PC Thuis"
  4068. --------V-500006-----------------------------
  4069. INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
  4070.     AX = 0006h
  4071.     ES:BX -> text string
  4072.     CH = type of input (see below)
  4073.     DH,DL = row,column of upper left corner
  4074.     DI = window handle
  4075. Return: AX = key which terminated entry
  4076.         0000h Enter
  4077.         0001h Esc
  4078.         0002h Down arrow
  4079.         0003h Up arrow
  4080.         0004h F10
  4081.  
  4082. Values for type of input:
  4083.  00h    everything
  4084.  01h    uppercase only
  4085.  02h    positive numbers
  4086.  03h    Dutch postal code ("9999 AA")
  4087.  04h    'J' or 'N' (Dutch yes/no)
  4088.  05h    telephone or FAX number
  4089.  06h    positive or negative number
  4090.  07h    date (dd/mm/yy)
  4091.  08h    money
  4092.  09h    '1' through '8'
  4093.  0Ah    '1' through '4'
  4094.  0Bh    uppercase filenames
  4095. --------l-500006-----------------------------
  4096. INT 50 - PC Thuis Organizer Shell - ALERT USER
  4097.     AX = 0006h
  4098.     ES:BX -> string
  4099. --------l-500007-----------------------------
  4100. INT 50 - PC Thuis Organizer Shell - DO LINE
  4101.     AX = 0007h
  4102.     ES:BX -> text string
  4103.     CX = string length in bytes (0000h if NUL-terminated)
  4104.     DL = FFh to center string, else flush left
  4105.     DH = upper left row
  4106.     DI = window handle
  4107. Return: AX = status
  4108.         0000h successful
  4109.         FFFFh error
  4110. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4111.       published in the June/July 1990 issue of PC Thuis Power magazine
  4112. SeeAlso: AX=0008h
  4113. --------l-500008-----------------------------
  4114. INT 50 - PC Thuis Organizer Shell - DO MENU
  4115.     AX = 0008h
  4116.     ES:BX -> menu structure
  4117. Return: AL = index 1 or FFh if not selected
  4118.     AH = index 2 or FFh if not selected
  4119.     BL = index 3 or FFh if not selected
  4120.     BH = index 4 or FFh if not selected
  4121. SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
  4122. --------l-500009-----------------------------
  4123. INT 50 - PC Thuis Organizer Shell - MESSAGE ON
  4124.     AX = 0009h
  4125.     ES:BX -> message string
  4126. SeeAlso: AX=000Ah
  4127. --------l-50000A-----------------------------
  4128. INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
  4129.     AX = 000Ah
  4130. SeeAlso: AX=0009h
  4131. --------l-50000B-----------------------------
  4132. INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
  4133.     AX = 000Bh
  4134.     BL = new attribute
  4135.     CH,CL = row,column of upper left corner
  4136.     DH,DL = row,column of lower right corner
  4137.     DI = window handle
  4138. --------l-50000C-----------------------------
  4139. INT 50 - PC Thuis Organizer Shell - DO REQUEST
  4140.     AX = 000Ch
  4141.     ES:BX -> request structure
  4142. Return: AX = status
  4143.         0000h confirmed
  4144.         FFFFh denied
  4145. SeeAlso: AX=0008h
  4146. --------l-50000D-----------------------------
  4147. INT 50 - PC Thuis Organizer Shell - EDIT LINE
  4148.     AX = 000Dh
  4149.     ES:BX -> text string
  4150.     CL = length
  4151.     CH = type
  4152.         bit 0: force uppercase
  4153.         bit 1: integer
  4154.         bit 2: no spaces allowed
  4155.         bit 3: no cursor keys
  4156.     DH,DL = row,column of upper left corner
  4157.     DI = window handle
  4158. Return: AX = result code
  4159. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4160.       published in the June/July 1990 issue of PC Thuis Power magazine
  4161. --------l-50000E-----------------------------
  4162. INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
  4163.     AX = 000Eh
  4164.     BL = character
  4165.     BH = attribute
  4166.     DH,DL = row,column at which to plot
  4167.     DI = window handle
  4168. Return: AX = status
  4169.         0000h successful
  4170.         FFFFh errror
  4171. --------l-50000F-----------------------------
  4172. INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
  4173.     AX = 000Fh
  4174.     BL = character
  4175.     BH = attribute
  4176.     DI = window handle
  4177. --------l-500010-----------------------------
  4178. INT 50 - PC Thuis Organizer Shell - TRACE MENU
  4179.     AX = 0010h
  4180.     ES:BX -> first menu structure
  4181.     CL = hotkey to look up
  4182. Return: AL = index 1 or FFh if not selected
  4183.     AH = index 2 or FFh if not selected
  4184.     BL = index 3 or FFh if not selected
  4185.     BH = index 4 or FFh if not selected
  4186. Index:    hotkeys;PC Thuis Organizer Shell
  4187. --------l-500011-----------------------------
  4188. INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
  4189.     AX = 0011h
  4190.     DS:SI -> source
  4191.     ES:DI -> destination
  4192.     CX = number of bytes to move (0000h = until NUL string terminator???)
  4193. SeeAlso: AX=0012h
  4194. --------l-500012-----------------------------
  4195. INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
  4196.     AX = 0012h
  4197.     DS:SI -> source
  4198.     ES:DI -> destination
  4199.     CX = number of bytes to compare (0000h=until NUL string terminator???)
  4200. Return: AX = status
  4201.         0000h same
  4202.         FFFFh different
  4203. SeeAlso: AX=0011h
  4204. --------l-500013-----------------------------
  4205. INT 50 - PC Thuis Organizer Shell - GET KEY
  4206.     AX = 0013h
  4207.     CH = type flags
  4208.         bit 0: force uppercase
  4209.         bit 1: integer
  4210.         bit 2: no spaces
  4211. Return: AX = keystroke
  4212. --------l-500014-----------------------------
  4213. INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
  4214.     AX = 0014h
  4215.     BL = direction
  4216.         06h up
  4217.         07h down
  4218.     BH = attribute
  4219.     DI = window handle
  4220. SeeAlso: INT 10/AH=06h,INT 10/AH=07h
  4221. --------l-500015-----------------------------
  4222. INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
  4223.     AX = 0015h
  4224.     BL = handle size
  4225.         00h 65536 bytes (64K)
  4226.         01h 65535 bytes (64K-1)
  4227.         02h 32768 bytes (32K)
  4228.         03h 32767 bytes (32K-1)
  4229. Return: AX = segment
  4230. Program: The PC Thuis Organizer Shell was written by John Vanderaart and
  4231.       published in the June/July 1990 issue of PC Thuis Power magazine
  4232. SeeAlso: INT 21/AH=48h
  4233. --------H-51---------------------------------
  4234. INT 51 - IRQ1 relocated by DESQview
  4235. Note:    this is the default location for older versions; see INT 50"DESQview"
  4236.       for details of interrupt relocation
  4237. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4238. --------H-51---------------------------------
  4239. INT 51 - IRQ1 relocated by IBM 3278 emulation control program
  4240. SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
  4241. --------H-51---------------------------------
  4242. INT 51 - IRQ1 relocated by OS/2 v1.x
  4243. SeeAlso: INT 50"OS/2",INT 54"OS/2"
  4244. --------H-52---------------------------------
  4245. INT 52 - IRQ2 relocated by DESQview
  4246. Note:    this is the default location for older versions; see INT 50"DESQview"
  4247.       for details of interrupt relocation
  4248. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4249. --------H-52---------------------------------
  4250. INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4251. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4252. --------H-53---------------------------------
  4253. INT 53 - IRQ3 relocated by DESQview
  4254. Note:    this is the default location for older versions; see INT 50"DESQview"
  4255.       for details of interrupt relocation
  4256. SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
  4257. --------H-53---------------------------------
  4258. INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4259. SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
  4260. --------N-53---------------------------------
  4261. INT 53 - WEB??? - API
  4262.     BX = function
  4263.         0000h ???
  4264.         AX = ???
  4265.         Return: AX = ???
  4266.         0004h ???
  4267.         0009h ???
  4268.         0015h
  4269.         AX = ???
  4270.         DX = ???
  4271.         0017h
  4272. Return: ???
  4273. Notes:    the installation check consists of looking for the signature "WEBCO"
  4274.       immediately prior to the interrupt handler
  4275.     the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
  4276. Index:    installation check;unknown|installation check;WEBCO
  4277. --------H-54---------------------------------
  4278. INT 54 - IRQ4 relocated by DESQview
  4279. Note:    this is the default location for older versions; see INT 50"DESQview"
  4280.       for details of interrupt relocation
  4281. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4282. --------H-54---------------------------------
  4283. INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4284. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4285. ----------545400-----------------------------
  4286. INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
  4287.     AX = 5400h
  4288. Return: AX = 0054h if installed
  4289.         CX:DX -> INT function handler
  4290. --------H-55---------------------------------
  4291. INT 55 - IRQ5 relocated by DESQview
  4292. Note:    this is the default location for older versions; see INT 50"DESQview"
  4293.       for details of interrupt relocation
  4294. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4295. --------H-55---------------------------------
  4296. INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4297. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4298. --------H-56---------------------------------
  4299. INT 56 - IRQ6 relocated by DESQview
  4300. Note:    this is the default location for older versions; see INT 50"DESQview"
  4301.       for details of interrupt relocation
  4302. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4303. --------H-56---------------------------------
  4304. INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4305. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4306. --------H-57---------------------------------
  4307. INT 57 - IRQ7 relocated by DESQview
  4308. Note:    this is the default location for older versions; see INT 50"DESQview"
  4309.       for details of interrupt relocation
  4310. SeeAlso: INT 50"DESQview",INT 58"DESQview"
  4311. --------H-57---------------------------------
  4312. INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
  4313. SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
  4314. --------H-58---------------------------------
  4315. INT 58 - IRQ8 relocated by DESQview 2.26+
  4316. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4317. SeeAlso: INT 50"DESQview",INT 70
  4318. --------H-58---------------------------------
  4319. INT 58 - IRQ0 relocated by DoubleDOS
  4320. SeeAlso: INT 08
  4321. --------H-59---------------------------------
  4322. INT 59 - IRQ9 relocated by DESQview 2.26+
  4323. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4324. SeeAlso: INT 50"DESQview",INT 71
  4325. --------H-59---------------------------------
  4326. INT 59 - IRQ1 relocated by DoubleDOS
  4327. SeeAlso: INT 09
  4328. --------V-59---------------------------------
  4329. INT 59 - GSS Computer Graphics Interface (GSS*CGI)
  4330.     DS:DX -> block of 5 array pointers
  4331. Return: CF set on error
  4332.         AX = error code
  4333.     CF clear if successful
  4334.         AX = return code
  4335. Note:    INT 59 is the means by which GSS*CGI language bindings communicate with
  4336.       GSS*CGI device drivers and the GSS*CGI device driver controller.
  4337.     also used by the IBM Graphic Development Toolkit
  4338. --------H-5A---------------------------------
  4339. INT 5A - IRQ10 relocated by DESQview 2.26+
  4340. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4341. SeeAlso: INT 50"DESQview",INT 72
  4342. --------H-5A---------------------------------
  4343. INT 5A - IRQ2 relocated by DoubleDOS
  4344. SeeAlso: INT 0A
  4345. --------N-5A---------------------------------
  4346. INT 5A - Cluster adapter BIOS entry address
  4347.     ???
  4348. --------H-5B---------------------------------
  4349. INT 5B - IRQ11 relocated by DESQview 2.26+
  4350. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4351. SeeAlso: INT 50"DESQview",INT 73
  4352. --------H-5B---------------------------------
  4353. INT 5B - IRQ3 relocated by DoubleDOS
  4354. SeeAlso: INT 0B
  4355. --------N-5B---------------------------------
  4356. INT 5B - Used by cluster adapter
  4357. --------N-5B---------------------------------
  4358. INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
  4359.     ES:BX -> Network Control Block (see below)
  4360. Return: AL = status (see INT 5C)
  4361. SeeAlso: INT 5C
  4362.  
  4363. Format of Network Control Block
  4364. Offset    Size    Description
  4365.  00h    BYTE    ncb_command (see below)
  4366.  01h    BYTE    ncb_retcode
  4367.  02h    BYTE    ncb_lsn
  4368.  03h    BYTE    ncb_num
  4369.  04h    DWORD    -> ncb_buffer
  4370.  08h    WORD    ncb_length
  4371.  0Ah 16 BYTEs    ncb_callname
  4372.  1Ah 16 BYTEs    ncb_name
  4373.  2Ah    BYTE    ncb_rto
  4374.  2Bh    BYTE    ncb_sto
  4375.  2Ch    DWORD    -> ncb_post    /* int (far *ncb_post)(); */
  4376.  30h    BYTE    ncb_lana_num
  4377.  31h    BYTE    ncb_cmd_cplt
  4378.  32h    DWORD    -> ncb_vname
  4379.  36h    BYTE    ncb_vnamelen
  4380.  37h  9 BYTEs    ncb_reserve
  4381. Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see INT 5C)
  4382.  
  4383. Values for ncb_command field same as for INT 5C, except
  4384.  70h    send net Break
  4385. --------N-5B---------------------------------
  4386. INT 5B - Microsoft Network Transport Layer Interface
  4387. Note:    used by MS-NET for executing network commands
  4388. SeeAlso: INT 5C"NetBIOS"
  4389. --------N-5B---------------------------------
  4390. INT 5B - used by Alloy NTNX
  4391. --------N-5B---------------------------------
  4392. INT 5B - ISOLAN Multi Protocol Software
  4393.     ES:BX -> Transfer Control Block
  4394. Return: AL = status
  4395. Note:    this software interface allows multiple protocols/software packages
  4396.       to access a BICC 411x network card
  4397.  
  4398. Format of Transfer Control Block:
  4399. Offset    Type    Description
  4400.  00h    BYTE    command code
  4401.         B3h Status
  4402.         F2h Activate
  4403.         F3h Deactivate
  4404.         F4h Send Data
  4405.  01h    BYTE    command identity
  4406.  02h    BYTE    virtual circuit ID
  4407.  03h    WORD    buffer length
  4408.  05h    DWORD    buffer pointer
  4409.  09h    BYTE    expedited data flag
  4410.  0Ah    BYTE    cancelable flag
  4411.  0Bh 16 BYTEs    local network address
  4412.  1Bh 16 BYTEs    remote network address
  4413.  2Bh    DWORD    asynchronous notification routine
  4414.  30h    DWORD    local network number
  4415.  34h    DWORD    remote network number
  4416.  38h    BYTE    call timeout
  4417.  39h    BYTE    not used
  4418.  3Ah  8 BYTEs    reserved
  4419.  42h    BYTE    command code extension
  4420.  43h    WORD    Blue Book MAC type
  4421. --------U-5B5254DL04-------------------------
  4422. INT 5B U - SitBack v3.02R - GET ???
  4423.     AX = 5254h
  4424.     DL = 04h
  4425. Return: ES:BX -> ??? in resident portion
  4426. Program: SitBack is a background file backup utility by SitBack Technologies,
  4427.       Inc. which initiates backups whenever the system is idle
  4428. SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
  4429. --------U-5B8485DL70-------------------------
  4430. INT 5B U - SitBack v3.02R - INSTALLATION CHECK
  4431.     AX = 8485h
  4432.     DL = 70h
  4433. Return: CX = 8485h if installed
  4434.         DX:AX -> ??? (configuration data?)
  4435. Program: SitBack is a background file backup utility by SitBack Technologies,
  4436.       Inc. which initiates backups whenever the system is idle
  4437. SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
  4438. --------U-5B8485DL71-------------------------
  4439. INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
  4440.     AX = 8485h
  4441.     DL = 71h
  4442. Return: ES:BX -> FAR entry point to ???
  4443. Note:    the flag which is modified is located at the address returned by
  4444.        AX=5254h/DL=04h
  4445. SeeAlso: AX=8485h/DL=72h
  4446. --------U-5B8485DL72-------------------------
  4447. INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
  4448.     AX = 8485h
  4449.     DL = 72h
  4450. Note:    the flag which is modified is located at the address returned by
  4451.        AX=5254h/DL=04h
  4452. SeeAlso: AX=8485h/DL=71h
  4453. --------U-5B8485DL73-------------------------
  4454. INT 5B U - SitBack v3.02R - ???
  4455.     AX = 8485h
  4456.     DL = 73h
  4457.     ???
  4458. Return: ???
  4459. --------U-5B8485DL74-------------------------
  4460. INT 5B U - SitBack v3.02R - ???
  4461.     AX = 8485h
  4462.     DL = 74h
  4463.     ???
  4464. Return: ???
  4465. --------U-5B8485DL75-------------------------
  4466. INT 5B U - SitBack v3.02R - ???
  4467.     AX = 8485h
  4468.     DL = 75h
  4469.     CX = ???
  4470. Return: ???
  4471. SeeAlso: AX=8485h/DL=76h
  4472. --------U-5B8485DL76-------------------------
  4473. INT 5B U - SitBack v3.02R - ???
  4474.     AX = 8485h
  4475.     DL = 76h
  4476.     CX = ???
  4477. Return: ???
  4478. Note:    conditionally calls the code for AX=8485h/DL=75h
  4479. SeeAlso: AX=8485h/DL=75h
  4480. --------U-5B8485DL77-------------------------
  4481. INT 5B U - SitBack v3.02R - SET ??? FLAG
  4482.     AX = 8485h
  4483.     DL = 77h
  4484. --------U-5B8485DL78-------------------------
  4485. INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
  4486.     AX = 8485h
  4487.     DL = 78h
  4488. Return: CX = 5342h if supported
  4489.         ES = AX = segment of TSR data
  4490. SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
  4491. --------U-5B8485DL79-------------------------
  4492. INT 5B U - SitBack v3.02R - GET DTA
  4493.     AX = 8485h
  4494.     DL = 79h
  4495. Return: CX = 5342h if supported
  4496.         ES:BX -> DTA set by last INT 21/AH=1Ah
  4497. Note:    this function is provided by SBOS.EXE rather than SB.EXE
  4498. SeeAlso: INT 21/AH=1Ah
  4499. --------U-5B8485DL7A-------------------------
  4500. INT 5B U - SitBack v3.02R - TOGGLE ???
  4501.     AX = 8485h
  4502.     DL = 7Ah
  4503. Return: CX = 5342h if supported
  4504.         AL = new value of ??? (00h or 01h)
  4505. --------H-5C---------------------------------
  4506. INT 5C - IRQ12 relocated by DESQview 2.26+
  4507. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4508. SeeAlso: INT 50"DESQview",INT 74
  4509. --------H-5C---------------------------------
  4510. INT 5C - IRQ4 relocated by DoubleDOS
  4511. SeeAlso: INT 0C
  4512. --------N-5C---------------------------------
  4513. INT 5C - NetBIOS INTERFACE
  4514.     ES:BX -> network control block (NCB) (see below)
  4515. Return: AL = status (see below)
  4516. Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
  4517.       programming interface to the IBM PC Network; the first implementation
  4518.       was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
  4519.       current networks support NetBIOS as the session layer.
  4520. Note:    The Sytek PCnet card uses DMA 3.
  4521. SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B
  4522.  
  4523. Values for NetBIOS status:
  4524.  00h    successful
  4525.  01h    bad buffer size
  4526.  03h    invalid NETBIOS command
  4527.  05h    timeout
  4528.  06h    receive buffer too small
  4529.  07h    No-ACK command failed
  4530.  08h    bad session number
  4531.  09h    LAN card out of memory
  4532.  0Ah    session closed
  4533.  0Bh    command has been cancelled
  4534.  0Dh    name already exists
  4535.  0Eh    local name table full
  4536.  0Fh    name still in use, can't delete
  4537.  11h    local session table full
  4538.  12h    remote PC not listening
  4539.  13h    bad NCB_NUM field
  4540.  14h    no answer to CALL or no such remote
  4541.  15h    name not in local name table
  4542.  16h    duplicate name
  4543.  17h    bad delete
  4544.  18h    abnormal end
  4545.  19h    name error, multiple identical names in use
  4546.  1Ah    bad packet
  4547.  21h    network card busy
  4548.  22h    too many commands queued
  4549.  23h    bad LAN card number
  4550.  24h    command finished while cancelling
  4551.  26h    command can't be cancelled
  4552.  30h    name defined by another process (OS/2)
  4553.  34h    NetBIOS environment not defined, must issue reset (OS/2)
  4554.  35h    required operating system resources exhausted (OS/2)
  4555.  36h    maximum applications exceeded (OS/2)
  4556.  37h    no SAPs available for NetBIOS (OS/2)
  4557.  38h    requested resources not available (OS/2)
  4558.  40h    Lana System Error
  4559.  41h    Lana Remote Hot Carrier
  4560.  42h    Lana Local Hot Carrier
  4561.  43h    Lana No Carrier Detected
  4562.  44h    unusual network condition
  4563.  45h-4Dh hardware error
  4564.  4Eh    token ring is broken
  4565.  4Fh    token ring error
  4566.  50h    adapter malfunction
  4567.  F7h    error in explicit INITIALIZE
  4568.  F8h    error in implicit OPEN
  4569.  F9h    TOKREUI internal error
  4570.  FAh    hardware adapter testing
  4571.  FBh    NetBIOS emulator not found
  4572.  FCh    OPEN or OPEN_SAP failure
  4573.  FDh    unexpected adapter closure
  4574.  FFh    NetBIOS busy (command pending)
  4575.  
  4576. Format of Network Control Block:
  4577. Offset    Size    Description
  4578.  00h    BYTE    command code (see below)
  4579.  01h    BYTE    return code
  4580.  02h    BYTE    local session number (LSN)
  4581.  03h    BYTE    "ncb_num" datagram table entry from ADD NAME
  4582.  04h    DWORD    -> I/O buffer
  4583.  08h    WORD    length of data in buffer
  4584.  0Ah 16 BYTEs    remote system to call
  4585.  1Ah 16 BYTEs    network name of local machine
  4586.  2Ah    BYTE    receive timeout in 1/2 seconds
  4587.  2Bh    BYTE    send timeout in 1/2 seconds
  4588.  2Ch    DWORD    -> FAR post handler    /* int (far *ncb_post)(); */
  4589.  30h    BYTE    network adapter number on which to execute command
  4590.         00h-03h IBM NetBIOS specs
  4591.         F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
  4592.  31h    BYTE    command completion code (see returned status above)
  4593.  32h 14 BYTEs    reserved for network card
  4594.  
  4595. Values for command code field in NCB (OR with 80h for non-waiting call):
  4596.  10h    start session with NCB_NAME name (call)
  4597.  11h    listen for call
  4598.  12h    end session with NCB_NAME name (hangup)
  4599.  14h    send data via NCB_LSN
  4600.  15h    receive data from a session
  4601.  16h    receive data from any session
  4602.  17h    send multiple data buffers
  4603.  20h    send unACKed message (datagram)
  4604.  21h    receive datagram
  4605.  22h    send broadcast datagram
  4606.  23h    receive broadcast datagram
  4607.  30h    add name to name table
  4608.  31h    delete name from name table
  4609.  32h    reset adapter card and tables
  4610.  33h    get adapter status (see structure "astatus" below)
  4611.  34h    status of all sessions for name (see structure "sstatus" below)
  4612.  35h    cancel
  4613.  36h    add group name to name table
  4614.  48h    send data and receive data (LAN Manager NETBEUI.DOS)
  4615.  70h    unlink from IBM remote program (no F0h function)
  4616.  71h    send data without ACK
  4617.  72h    send multiple buffers without ACK
  4618.  72h    UngermannBass Register (conflicts with above function)
  4619.  73h    UngermannBass SendNmc
  4620.  74h    UngermannBass Callniu
  4621.  75h    UngermannBass Calladdr
  4622.  76h    UngermannBass Listenaddr
  4623.  77h    UngermannBass SendPkt
  4624.  78h    find name
  4625.  78h    UngermannBass RcvPkt (conflicts with above function)
  4626.  79h    token-ring protocol trace
  4627.  79h    UngermannBass SendAttn (conflicts with above function)
  4628.  7Ah    UngermannBass RcvAttn
  4629.  7Bh    UngermannBass Listenniu
  4630.  7Ch    UngermannBass RcvRaw
  4631.  7Dh    UngermannBass SendNmc2
  4632.  7Fh    Beame&Whiteside BWNB installation check (returns with return code and
  4633.       completion code both set to 03h, while invalid functions return only
  4634.       return code field set to 03h)
  4635.  
  4636. Format of structure "name":
  4637. Offset    Size    Description
  4638.  00h 16 BYTEs "nm_name" symbolic name
  4639.  10h    BYTE  "nm_num" number associated with name
  4640.  11h    BYTE  nm_status
  4641.  
  4642. Format of structure "astatus":
  4643. Offset    Size    Description
  4644.  00h  6 BYTEs as_id
  4645.  06h    BYTE  as_jumpers
  4646.  07h    BYTE  as_post
  4647.  08h    BYTE  as_major
  4648.  09h    BYTE  as_minor
  4649.  0Ah    WORD  as_interval
  4650.  0Ch    WORD  as_crcerr
  4651.  0Eh    WORD  as_algerr
  4652.  10h    WORD  as_colerr
  4653.  12h    WORD  as_abterr
  4654.  14h    DWORD as_tcount
  4655.  18h    DWORD as_rcount
  4656.  1Ch    WORD  as_retran
  4657.  1Eh    WORD  as_xresrc
  4658.  20h  8 BYTEs as_res0
  4659.  28h    WORD  as_ncbfree
  4660.  2Ah    WORD  as_ncbmax
  4661.  2Ch    WORD  as_ncbx
  4662.  2Eh  4 BYTEs as_res1
  4663.  32h    WORD  as_sespend
  4664.  34h    WORD  as_msp
  4665.  36h    WORD  as_sesmax
  4666.  38h    WORD  as_bufsize
  4667.  3Ah    WORD  as_names
  4668.  3Ch 16 name structures     as_name
  4669.  
  4670. Format of structure "sstatus":
  4671. Offset    Size    Description
  4672.  00h    BYTE    number of sessions being reported
  4673.  01h    BYTE    number of sessions with this name
  4674.  02h    BYTE    number of outstanding receive datagrams
  4675.  03h    BYTE    number of outstanding ReceiveAnys
  4676.  04h    var    session structures (see below)
  4677.  
  4678. Format of structure "session":
  4679. Offset    Size    Description
  4680.  00h    BYTE    local session number
  4681.  01h    BYTE    state
  4682.         01h listen pending
  4683.         02h call pending
  4684.         03h session established
  4685.         04h hangup pending
  4686.         05h hangup done
  4687.         06h session aborted
  4688.  02h 16 BYTEs    local name
  4689.  12h 16 BYTEs    remote name
  4690.  22h    BYTE    number of outstanding receives
  4691.  23h    BYTE    number of outstanding sends/chainsends
  4692. --------N-5C---------------------------------
  4693. INT 5C - TOPS INTERFACE
  4694.     ES:BX -> Network Control Block
  4695. Note:    TOPS card uses DMA 1, 3 or none.
  4696. --------N-5C---------------------------------
  4697. INT 5C - ATALK.SYS - AppleTalk INTERFACE
  4698.     DX:BX -> control block (see below)
  4699. Return: none
  4700. Notes:    this driver can use any interrupt from 5Ch to 70h
  4701.     the signature 'AppleTalk' appears 16 bytes prior to the interrupt
  4702.       handler; this serves as the installation check
  4703. Index:    installation check;ATALK.SYS|installation check;AppleTalk interface
  4704.  
  4705. Values for command code:
  4706.  01h    "AT_INIT"        initialize the driver
  4707.  02h    "AT_KILL"
  4708.  03h    "AT_GETNETINFO" get current network info incl init status
  4709.  04h    "AT_GETCLOCKTICKS"
  4710.  05h    "AT_STARTTIMER"
  4711.  06h    "AT_RESETTIMER"
  4712.  07h    "AT_CANCELTIMER"
  4713.  10h    "LAP_INSTALL"
  4714.  11h    "LAP_REMOVE"
  4715.  12h    "LAP_WRITE"
  4716.  13h    "LAP_READ"
  4717.  14h    "LAP_CANCEL"
  4718.  20h    "DDP_OPENSOCKET"
  4719.  21h    "DDP_CLOSESOCKET"
  4720.  22h    "DDP_WRITE"
  4721.  23h    "DDP_READ"
  4722.  24h    "DDP_CANCEL"
  4723.  30h    "NBP_REGISTER"
  4724.  31h    "NBP_REMOVE"
  4725.  32h    "NBP_LOOKUP"
  4726.  33h    "NBP_CONFIRM"
  4727.  34h    "NBP_CANCEL"
  4728.  35h    "ZIP_GETZONELIST"
  4729.  36h    "ZIP_GETMYZONE"
  4730.  37h    "ZIP_TAKEDOWN"
  4731.  38h    "ZIP_BRINGUP"
  4732.  40h    "ATP_OPENSOCKET"
  4733.  41h    "ATP_CLOSESOCKET"
  4734.  42h    "ATP_SENDREQUEST"
  4735.  43h    "ATP_GETREQUEST"
  4736.  44h    "ATP_SENDRESPONSE"
  4737.  45h    "ATP_ADDRESPONSE"
  4738.  46h    "ATP_CANCELTRANS"
  4739.  47h    "ATP_CANCELRESPONSE"
  4740.  48h    "ATP_CANCELREQUEST"
  4741.  50h    "ASP_GETPARMS"
  4742.  51h    "ASP_CLOSESESSION"
  4743.  52h    "ASP_CANCEL"
  4744.  53h    "ASP_INIT"
  4745.  54h    "ASP_KILL"
  4746.  55h    "ASP_GETSESSION"
  4747.  56h    "ASP_GETREQUEST"
  4748.  57h    "ASP_CMDREPLY"
  4749.  58h    "ASP_WRTCONTINUE"
  4750.  59h    "ASP_WRTREPLY"
  4751.  5Ah    "ASP_CLOSEREPLY"
  4752.  5Bh    "ASP_NEWSTATUS"
  4753.  5Ch    "ASP_ATTENTION"
  4754.  5Dh    "ASP_GETSTATUS"
  4755.  5Eh    "ASP_OPENSESSION"
  4756.  5Fh    "ASP_COMMAND"
  4757.  60h    "ASP_WRITE"
  4758.  61h    "ASP_GETATTENTION"
  4759.  70h    "PAP_OPEN"
  4760.  71h    "PAP_CLOSE"
  4761.  72h    "PAP_READ"
  4762.  73h    "PAP_WRITE"
  4763.  74h    "PAP_STATUS"
  4764.  75h    "PAP_REGNAME"
  4765.  76h    "PAP_REMNAME"
  4766.  77h    "PAP_INIT"
  4767.  78h    "PAP_NEWSTATUS"
  4768.  79h    "PAP_GETNEXTJOB"
  4769.  7Ah    "PAP_KILL"
  4770.  7Bh    "PAP_CANCEL"
  4771.  
  4772. Format of AppleTalk control block:
  4773. Offset    Size    Description
  4774.  00h    WORD    command code (see above)
  4775.         OR with the following flags
  4776.         8000h start command then return
  4777.         4000h wait for interrupt service to complete
  4778.  02h    WORD    returned status
  4779.         0000h success (already initialized if func 01h)
  4780.  04h    DWORD    pointer to completion function
  4781.  08h    WORD    network number
  4782.  0Ah    BYTE    node ID
  4783. ---if general func (01h,03h), control block continues:
  4784.  0Bh    BYTE    "inf_abridge"
  4785.  0Ch    WORD    "inf_config"
  4786.  0Eh    DWORD    pointer to buffer
  4787.  12h    WORD    buffer size
  4788. ---if DDP function (20h-24h), control block continues:
  4789.  0Bh    BYTE    "ddp_addr_socket"
  4790.  0Ch    BYTE    "ddp_socket"
  4791.  0Dh    BYTE    "ddp_type"
  4792.  0Eh    DWORD    pointer to buffer
  4793.  12h    WORD    buffer size
  4794.  14h    BYTE    "ddp_chksum"
  4795. ---if Name Binding Protocol (30h-34h), control block continues:
  4796.  0Bh    BYTE    "nbp_addr_socket"
  4797.  0Ch    WORD    "nbp_toget"
  4798.  0Eh    DWORD    pointer to buffer
  4799.  12h    WORD    buffer size
  4800.  14h    BYTE    "nbp_interval"
  4801.  15h    BYTE    "nbp_retry"
  4802.  16h    DWORD    "nbp_entptr"
  4803. ---if AppleTalk Transaction Protocol (42h), control block continues:
  4804.  0Bh    BYTE    "atp_addr_socket"
  4805.  0Ch    WORD    "atp_socket"
  4806.  0Eh    DWORD    pointer to buffer
  4807.  12h    WORD    buffer size
  4808.  14h    BYTE    "atp_interval"
  4809.  15h    BYTE    "atp_retry"
  4810.  16h    BYTE    ATP flags
  4811.         bit 5: exactly one transaction
  4812.  17h    BYTE    "atp_seqbit"
  4813.  18h    BYTE    transaction ID
  4814.  19h  4 BYTEs    ATP user bytes
  4815.  1Dh    BYTE    number of BDS buffers
  4816.  1Eh    BYTE    number of BDS responses
  4817.  1Fh    DWORD    pointer to BDS buffers (see below)
  4818.  
  4819. Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
  4820. Offset    Size    Description
  4821.  00h    WORD    "tup_address_network"
  4822.  02h    BYTE    "tup_address_notid"
  4823.  03h    BYTE    "tup_address_socket"
  4824.  04h    BYTE    "tup_enum"
  4825.  05h 99 BYTEs    name
  4826.  
  4827. Format of BDS entries:
  4828. Offset    Size    Description
  4829.  00h    DWORD    pointer to buffer
  4830.  04h    WORD    size of buffer
  4831.  06h    WORD    BDS data size
  4832.  08h  4 BYTEs    "bds_userbytes"
  4833. --------N-5C---------------------------------
  4834. INT 5C - IBM 802.2 INTERFACE (LLC)
  4835.     ES:BX -> CCB (see below)
  4836. Return: none
  4837.  
  4838. Format of CCB:
  4839. Offset    Size    Description
  4840.  00h    BYTE    adapter
  4841.  01h    BYTE    command code
  4842.  02h    BYTE    return code
  4843.  03h    BYTE    work
  4844.  04h    DWORD    pointer to ???
  4845.  08h    DWORD    pointer to completion function???
  4846.  0Ch    DWORD    pointer to parameters???
  4847. --------N-5C---------------------------------
  4848. INT 5C - $25 LAN - INSTALLATION CHECK
  4849. Notes:    current versions only check whether the vector is 0000h:0000h or not
  4850.     future versions are supposed to have the signature "NET" in the three
  4851.       bytes preceding the INT 5C handler
  4852. --------N-5C04-------------------------------
  4853. INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
  4854.     AH = 04h
  4855.     AL = COM port (0 = default)
  4856.     CX = wait count in character times (should be at least 100)
  4857. Return: ZF set if link alive
  4858. --------H-5D---------------------------------
  4859. INT 5D - IRQ13 relocated by DESQview 2.26+
  4860. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4861. SeeAlso: INT 50"DESQview",INT 75
  4862. --------H-5D---------------------------------
  4863. INT 5D - IRQ5 relocated by DoubleDOS
  4864. SeeAlso: INT 0D,INT 5C"DoubleDOS"
  4865. --------H-5E---------------------------------
  4866. INT 5E - IRQ14 relocated by DESQview 2.26+
  4867. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4868. SeeAlso: INT 50"DESQview",INT 76
  4869. --------H-5E---------------------------------
  4870. INT 5E - IRQ6 relocated by DoubleDOS
  4871. SeeAlso: INT 0E,INT 5D"DoubleDOS"
  4872. --------H-5F---------------------------------
  4873. INT 5F - IRQ15 relocated by DESQview 2.26+
  4874. Note:    this is the default, but other INTs may be used (see INT 50"DESQview")
  4875. SeeAlso: INT 50"DESQview",INT 77
  4876. --------H-5F---------------------------------
  4877. INT 5F - IRQ7 relocated by DoubleDOS
  4878. SeeAlso: INT 0F,INT 5E"DoubleDOS"
  4879. --------b-5F00-------------------------------
  4880. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET VIDEO MODE
  4881.     AH = 00h
  4882.     AL = video mode
  4883.         07h text, system manager compliant
  4884.         20h 240x128 mono graphics, system manager compliant
  4885.         87h text, not system manager compliant
  4886.         A0h 240x128 mono graphics, not system manager compliant
  4887. Note:    the defaults after setting the mode to graphics are (0,0) logical
  4888.       origin, full-screen clip region, (0,0) pen location, pen color 1,
  4889.       pixel replacement FORCE, line type and fill mask all bits set
  4890. SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
  4891. --------b-5F01-------------------------------
  4892. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET FILL MASK
  4893.     AH = 01h
  4894.     ES:DI -> 8-byte fill mask
  4895. Note:    the fill mask represents an 8x8 pixel box and is repeated as necessary
  4896.       when drawing filled rectangles; it is always aligned with the byte
  4897.       boundaries of video memory, regardless of the actual boundaries of
  4898.       the rectangle
  4899. SeeAlso: AH=02h
  4900. --------b-5F02-------------------------------
  4901. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFORMATION
  4902.     AH = 02h
  4903.     ES:DI -> graphics info record (see below)
  4904. Return: DX:AX -> filled graphics info record (for return to high-level langs)
  4905.  
  4906. Format of graphics info record:
  4907. Offset    Size    Description
  4908.  00h    BYTE    current video mode
  4909.  01h    BYTE    default video mode
  4910.  02h    WORD    display width in pixels
  4911.  04h    WORD    display height in pixels
  4912.  06h    WORD    current pen column
  4913.  08h    WORD    current pen row
  4914.  0Ah    WORD    current line type
  4915.  0Ch    WORD    current replacement rule
  4916.  0Eh    WORD    current pen color
  4917.  10h    WORD    current leftmost column of clip region
  4918.  12h    WORD    current rightmost column of clip region
  4919.  14h    WORD    current topmost row of clip region
  4920.  16h    WORD    current bottommost row of clip region
  4921.  18h    WORD    current column of logical origin
  4922.  1Ah    WORD    current row of logical origin
  4923.  1Ch  8 BYTEs    current fill mask
  4924. --------b-5F03-------------------------------
  4925. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
  4926.     AH = 03h
  4927.     CX = column
  4928.     DX = row
  4929. SeeAlso: AH=04h
  4930. --------b-5F04-------------------------------
  4931. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET CLIP REGION
  4932.     AH = 04h
  4933.     CX = left-most column
  4934.     DX = top-most row
  4935.     SI = right-most column
  4936.     DI = bottom-most row
  4937. SeeAlso: AH=03h
  4938. --------b-5F05-------------------------------
  4939. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
  4940.     AH = 05h
  4941.     AL = fill type
  4942.         00h outline, using current line type and color
  4943.         01h solid, using current color
  4944.         02h pattern, using current fill mask and color
  4945.     DX,CX = row,column of other corner of rectangle
  4946. Note:    the rectangle is drawn starting at the current pen position
  4947. SeeAlso: AH=01h,AH=06h,AH=07h
  4948. --------b-5F06-------------------------------
  4949. INT 5F - HP 95LX GRAPHICS PRIMITIVES - DRAW LINE
  4950.     AH = 06h
  4951.     DX,CX = row,column of end point
  4952. Note:    the line is drawn starting at the current pen position
  4953. SeeAlso: AH=05h,AH=07h
  4954. --------b-5F07-------------------------------
  4955. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PLOT POINT
  4956.     AH = 07h
  4957.     DX,CX = row,column of point
  4958. Note:    also sets pen position to the specified point
  4959. SeeAlso: AH=06h,AH=08h,AH=0Ch
  4960. --------b-5F08-------------------------------
  4961. INT 5F - HP 95LX GRAPHICS PRIMITIVES - MOVE PEN
  4962.     AH = 08h
  4963.     DX,CX = row,column of new pen position
  4964. SeeAlso: AH=07h,AH=09h
  4965. --------b-5F09-------------------------------
  4966. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET PEN COLOR
  4967.     AH = 09h
  4968.     AL = new color (00h = white, 01h = black)
  4969. SeeAlso: AH=08h,AH=0Ah,AH=0Bh
  4970. --------b-5F0A-------------------------------
  4971. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
  4972.     AH = 0Ah
  4973.     AL = new replacement rule
  4974.         00h force
  4975.         01h AND
  4976.         02h OR
  4977.         03h XOR
  4978. SeeAlso: AH=01h,AH=09h,AH=0Bh
  4979. --------b-5F0B-------------------------------
  4980. INT 5F - HP 95LX GRAPHICS PRIMITIVES - SET LINE TYPE
  4981.     AH = 0Bh
  4982.     CX = new line type
  4983. Note:    the line type specifies 16 bits which are repeated over and over while
  4984.       drawing the pixels of a line
  4985. SeeAlso: AH=09h,AH=0Ah
  4986. --------b-5F0C-------------------------------
  4987. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET PIXEL
  4988.     AH = 0Ch
  4989.     DX,CX = row,column of pixel to read
  4990. Return: AX = pixel color
  4991. SeeAlso: AH=07h
  4992. --------b-5F0D-------------------------------
  4993. INT 5F - HP 95LX GRAPHICS PRIMITIVES - GET IMAGE
  4994.     AH = 0Dh
  4995.     DX,CX = row,column of first corner
  4996.     BP,SI = row,column of second corner
  4997.     ES:DI -> image buffer (see below)
  4998. Note:    the specified corners are included in the saved image
  4999. SeeAlso: AH=0Eh
  5000.  
  5001. Format of image buffer:
  5002. Offset    Size    Description
  5003.  00h    WORD    number of planes (always 01h on HP 95LX)
  5004.  02h    WORD    number of bits/pixel (always 01h on HP 95LX)
  5005.  04h    WORD    image width in pixels
  5006.  06h    WORD    image height in pixels
  5007.  08h  N BYTEs    image data
  5008.         requires (WIDTH+7)/8 * HEIGHT bytes
  5009. --------b-5F0E-------------------------------
  5010. INT 5F - HP 95LX GRAPHICS PRIMITIVES - PUT IMAGE
  5011.     AH = 0Eh
  5012.     AL = replacement rule
  5013.         bit 2: invert image before applying rule
  5014.         bits 1-0:  00 force
  5015.                01 AND
  5016.                10 OR
  5017.                11 XOR
  5018.     DX,CX = row,column of top left corner
  5019.     ES:DI -> image buffer (see AH=0Dh)
  5020. Note:    if the specified image does not fit completely on the screen, this call
  5021.       does nothing
  5022. SeeAlso: AH=0Dh
  5023. --------b-5F0F-------------------------------
  5024. INT 5F - HP 95LX GRAPHICS PRIMITIVES - WRITE TEXT
  5025.     AH = 0Fh
  5026.     AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
  5027.     DX,CX = row,column of first character's top left corner
  5028.     ES:DI -> ASCIZ text
  5029. --------*-60---------------------------------
  5030. INT 60 - reserved for user interrupt
  5031. --------v-60---------------------------------
  5032. INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
  5033.    The "Zero Bug" virus hooks this vector.  It considers itself installed if
  5034.    offset 103h of the handler's segment contains the bytes "ZE"
  5035. SeeAlso: INT 32,INT 44"VIRUS",INT 61"SEMTEX"
  5036. --------d-60---------------------------------
  5037. INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5038. SeeAlso: INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec",INT 64"Adaptec"
  5039. Notes:    this vector stores the first four bytes of the parameter table for
  5040.       hard disk 0
  5041.     these vectors are used by the following Adaptec controllers:
  5042.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5043.     these vectors are NOT used by the following Adaptec controllers:
  5044.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5045. --------b-60---------------------------------
  5046. INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
  5047.    supplies a number of subfunctions which perform such functions as drawing
  5048.    boxes and menus, and provide input line editing
  5049. SeeAlso: INT 61"Atari"
  5050. --------V-60---------------------------------
  5051. INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5052. Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
  5053. Note:    Nabbit searches INT 60 through INT 66 for a vector which points at
  5054.       its ASCIZ signature string "iG" (69h 47h 00h), and uses the first
  5055.       free vector in that range it is it not already installed
  5056. --------V-60---------------------------------
  5057. INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
  5058. Program: Buffit is a shareware scrollback utility by D.T. Hamilton
  5059. Notes:    Buffit searches INT 60 through INT 6F for a vector which points at
  5060.       the ASCII signature "Buffit  ", and uses the first free vector in
  5061.       that range if it is not already installed
  5062.     there is a private entry point immediately following the signature
  5063.       string, i.e. eight bytes beyond the address pointed at by the
  5064.       interrupt
  5065.  
  5066. Call private entry point with:
  5067.     AH = function
  5068.         00h get information and hotkey state
  5069.         01h get information and toggle hotkey state
  5070. Return: AH = new hotkey state (00h enabled, 01h disabled)
  5071.     AL = hotkey scan code
  5072.     BH = hotkey shift states
  5073.     BL = ??? (01h)
  5074.     CX = segment of resident code
  5075.     DH = niterrupt number used for signature pointer
  5076.     DL = ??? (00h)
  5077.     SI = INT 09 handler offset
  5078.     DI = INT 21 handler offset
  5079. Index:    hotkeys;Buffit
  5080. --------r-60---------------------------------
  5081. INT 60 - PC-IPC API
  5082.     STACK:    DWORD    pointer to parameter block (see below)
  5083. Return: STACK:    unchanged
  5084. Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
  5085.       allows communication between independent programs
  5086. Note:    INT 60 is the default, any interrupt vector may be used by specifying
  5087.       the vector on the commandline
  5088.  
  5089. Format of parameter block:
  5090. Offset    Size    Description
  5091.  00h    WORD    caller's ID
  5092.  02h    WORD    to ID
  5093.  04h    WORD    command code (see below)
  5094.  06h    WORD    returned status (see below)
  5095.  08h    WORD    returned error code (see below)
  5096.  0Ah    WORD    size of data
  5097.  0Ch    DWORD    pointer to data buffer
  5098.  
  5099. Values for command code:
  5100.  01h "IPC_CMND_INQUIRE"     inquire current status
  5101.         set status field, writes WORD to data buffer containing free
  5102.           message space in bytes, and sets the "size" field to the
  5103.           number of messages waiting
  5104.  02h "IPC_CMND_ENABLE"    reenable PC-IPC
  5105.         ignored unless called with the same ID that disabled PC-IPC
  5106.  03h "IPC_CMND_DISABLE" disable PC-IPC
  5107.  04h "IPC_CMND_INSTALL" reset PC-IPC
  5108.  06h "IPC_CMND_RDATA"    read data
  5109.         returns first message in data buffer, sets "size" to message
  5110.           length and "to ID" field to sender's ID
  5111.         if no messages available, bit 4 of status is cleared and "size"
  5112.           is set to zero
  5113.  07h "IPC_CMND_SDATA"    send data
  5114.  08h "IPC_CMND_REQID"    require user ID
  5115.         create a new recognized ID and return in "caller's ID" field
  5116.  09h "IPC_CMND_DELID"    cancel user ID
  5117.         delete caller's ID from pool of recognized IDs
  5118.  0Ah "IPC_CMND_RDATAW"    read data, wait if no messages available
  5119.  0Bh "IPC_CMND_VERS"    get PC-IPC version
  5120.         string representing version returned in data buffer, "size"
  5121.           field set to length of string
  5122.  
  5123. Bitfields for returned status:
  5124. Bit(s)    Description
  5125.  0    unused
  5126.  1    IPC enabled
  5127.  2    IPC installed
  5128.  3    error
  5129.  4    message(s) available
  5130.  
  5131. Values for error code:
  5132.  00h    no error
  5133.  01h    invalid command or parameter
  5134.  02h    only process 0 can install/reset IPC
  5135.  03h    process can not install/reset IPC
  5136.  04h    IPC is not enabled
  5137.  05h    process can not disable IPC
  5138.  06h    invalid destination process ID
  5139.  07h    invalid sending process ID
  5140.  08h    invalid data destination
  5141.  09h    no more process IDs available
  5142.  0Ah    can not relinquish that process ID
  5143.  0Bh    message space is full
  5144.  0Ch    IPC is not installed
  5145. --------R-60---------------------------------
  5146. INT 60 - Tangram Arbiter - API
  5147. Notes:    Arbiter may use any interrupt from 60h to 66h (parameterized)
  5148.     identified by string "@ARB_API" immediately following a short jump at
  5149.       the interrupt handler address
  5150.     Arbiter makes a PC disk look like a slow disk over an SNA link to an
  5151.       IBM mainframe
  5152. --------N-60---------------------------------
  5153. INT 60 - Excelan LAN Workplace for DOS 3.5 - API
  5154.     ES:BX -> request packet
  5155. Return: request packet updated
  5156. Notes:    this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
  5157.       which was used in creating this description
  5158.     the installation check consists of testing for the WORD 4142h ('AB')
  5159.       immediately preceding the interrupt handler
  5160. BUG:    because BWLWP35 range-checks only the low byte of the function number,
  5161.       and has a fencepost error even in that test, functions 000Bh and
  5162.       XX01h-XX0Bh (XX nonzero) branch to random locations
  5163. SeeAlso: INT 2F/AX=7A40h
  5164.  
  5165. Format of request packet:
  5166. Offset    Size    Description
  5167.  00h 12 BYTEs    ???
  5168.  0Ch    WORD    (return) error code (see below)
  5169.  0Eh    DWORD    -> FAR function for ???
  5170.  12h    WORD    function number
  5171.         0001h ???
  5172.         0002h NOP
  5173.         0003h NOP
  5174.         0004h NOP
  5175.         0005h ???
  5176.         0006h get ??? record
  5177.         0007h NOP
  5178.         0008h reset ???
  5179.         0009h NOP
  5180.         000Ah set ???
  5181.     ???
  5182. ---function 01h---
  5183.  20h    BYTE    (call) subfunction (32h-3Bh)
  5184.         3Bh non-blocking I/O request (will be tested every clock tick)
  5185.  21h    BYTE    (return) error code
  5186.         00h successful
  5187.         09h invalid connection number
  5188.         2Ah bad connection type
  5189.         45h ???
  5190. ---function 01h, subfunction 32h---
  5191.  3Ah    WORD    (call) connection type (01h stream, 02h datagram)
  5192. ---function 01h, subfunction 34h---
  5193.  26h    WORD    (call) ???
  5194.  28h    WORD    (call) ???
  5195.  2Ah    WORD    (call) ???
  5196. ---function 01h, subfunction 35h---
  5197.  1Ah    WORD    (call) connection number???
  5198.  26h    WORD    (return) ???
  5199. ---function 01h, subfunction 36h---
  5200.  1Ah    WORD    (call) connection number???
  5201.  38h    WORD    ???
  5202. ---function 01h, subfunction 37h---
  5203.  24h    WORD    (return) ???
  5204.  26h    WORD    (return) ???
  5205. ---function 01h, subfunction 38h---
  5206.  1Ah    WORD    (call) connection number???
  5207. ---function 01h, subfunction 3Ah---
  5208.  22h    WORD    (call) ???
  5209.         667Eh ???
  5210.         667Fh ???
  5211.  24h    BYTE    (call 667Eh) ???
  5212.  24h    WORD    (return 667Fh) ???
  5213. ---function 01h, subfunction 3Bh---
  5214.  0Eh    DWORD    (call) -> function to invoke for I/O or 0000h:0000h
  5215.         function called with AX = 0000h
  5216.                      STACK: DWORD -> request packet
  5217.                         WORD 0000h
  5218.             should return STACK unchanged
  5219.  1Ah    WORD    (call) connection number???
  5220.  21h    BYTE    (return) set to 01h when I/O becomes possible
  5221.  22h    BYTE    (call) direction (00h write, 01h read)
  5222.  34h    DWORD    (return) -> next pending request packet
  5223. ---function 05h---
  5224.  1Eh    WORD    (call) ???
  5225.  20h    WORD    (call) ???
  5226.  34h    DWORD    (call) -> ???
  5227. ---function 06h---
  5228.  16h    DWORD    (call) -> buffer for ??? record (see below)
  5229.  1Ah    WORD    (call) number of bytes to copy
  5230.  22h    WORD    (return) number of bytes transferred
  5231. ---function 08h---
  5232.  14h    WORD    (return) ??? (0001h)
  5233. ---function 0Ah---
  5234.  16h    DWORD    (call) -> WORD ???
  5235.  1Ch    WORD    (call) must be 000Ah for BWLWP35
  5236.  
  5237. Values for error code:
  5238.  0000h    successful
  5239.  002Dh    invalid function
  5240.  0050h    ???
  5241.  
  5242. Format of ??? record:
  5243. Offset    Size    Description
  5244.  00h    WORD    offset of ???
  5245.  02h  4 BYTEs    ???
  5246.  06h    DWORD    IP address (big-endian)
  5247.  0Ah  6 BYTEs    physical address (big-endian)
  5248.     ???
  5249. --------G-60---------------------------------
  5250. INT 60 U - INTRSPY/CMDSPY API
  5251. Program: INTRSPY is a script-driven debugger included with the book
  5252.       _Undocumented_DOS_.
  5253. Notes:    INTRSPY will hook the first available interrupt in the range 60h-67h.
  5254.     The installation check is to
  5255.       a) determine that the handler is an IRET instruction
  5256.       b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
  5257.       If INTRSPY is installed, the DWORD immediately after the IRET stores
  5258.       its entry point.
  5259. Index:    installation check;INTRSPY
  5260.  
  5261. Call INTRSPY entry point with:
  5262.     AH = function
  5263.         00h ???
  5264.         01h set current directory (for use in reporting)
  5265.         ES:DI -> counted string containing directory name (max 79 char)
  5266.         02h set name of script file
  5267.         ES:DI -> counted string containing file name (max 79 chars)
  5268.         03h set script arguments
  5269.         ES:DI -> counted string containing arguments (max 79 chars)
  5270.         04h get directory set with function 01h
  5271.         ES:DI -> 80-byte buffer for directory name
  5272.         05h get name of script file
  5273.         ES:DI -> 80-byte buffer for script filename
  5274.         06h get script arguments
  5275.         ES:DI -> 80-byte buffer for script arguments
  5276.         07h get ???
  5277.         CL = 00h-15h specifies what to get
  5278.         ES:DI -> WORD to be set with desired value on return
  5279.         08h get ???
  5280.         ES:DI -> WORD to be set with returned value
  5281.         09h get ???
  5282.         ES:DI -> WORD to be set with returned value
  5283.         0Bh store code for interrupt handler???
  5284.         ES:DI -> data
  5285.         CX = number of bytes
  5286.         0Ch ???
  5287.         ES:DI -> ???
  5288.         0Dh get ???
  5289.         ES:DI -> BYTE to be set with returned value
  5290.         0Eh set ??? flag
  5291.         0Fh clear ??? flag
  5292.         10h ???
  5293.         Return: AL = 04h or 05h if failed
  5294.         11h ???
  5295.         Return: AL = 05h if failed
  5296.         12h get ???
  5297.         ES:DI -> buffer
  5298.         Return: CX = number of bytes returned in buffer
  5299.         13h ???
  5300. Return: AH = 00h
  5301.     AL = status
  5302.         00h successful
  5303.         01h invalid function
  5304.         02h ???
  5305.         03h ???
  5306.         04h ???
  5307.         05h ???
  5308. --------u-60---------------------------------
  5309. INT 60 U - PC/370 v4.2 - ???
  5310.     ???
  5311. Return: ???
  5312. Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
  5313. Note:    this is the default interrupt, however the documentation includes
  5314.       instructions for patching the system for another interrupt
  5315. SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
  5316. --------r-60---------------------------------
  5317. INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
  5318. SeeAlso: INT 61"JPI"
  5319. --------N-60---------------------------------
  5320. INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
  5321. Notes:    The handler for the interrupt will start with a 3-byte jump
  5322.       instruction, followed by the ASCIZ string "PKT DRVR" (the
  5323.       terminating NUL is significant).
  5324.     To find the interrupt being used by the driver, an application should
  5325.       scan through interrupt vectors 60h to 80h (20h through FFh for
  5326.       v1.10+ of the specification) until it finds one with the "PKT DRVR"
  5327.       string.
  5328.     AH values of 80h to FFh have been reserved for user-defined additions.
  5329. --------b-60----DI0100-----------------------
  5330. INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
  5331.     DI = 0100h
  5332.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5333.         DWORD    pointer to event record (see below)
  5334. Return: event record filled
  5335.     STACK unchanged
  5336. Note:    this call will timeout after about 500ms
  5337. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
  5338.  
  5339. Values for event type:
  5340.  00h    no events
  5341.  01h    keystroke available
  5342.  02h    Ctrl-Break
  5343.  03h    reactivation (always follows deactivation event)
  5344.  04h    about to deactivate (sleep)
  5345.     next get-event call will not return until reactivated
  5346.  05h    forced application termination
  5347.  06h    1-2-3 bridge service request (only given to 1-2-3)
  5348.  07h    request to grow
  5349.  08h    request to shrink
  5350.  09h    application's alarm expired
  5351.  0Ah    daily chance to set an alarm
  5352.  0Bh    system date or time has been changed
  5353.  
  5354. Format of event record:
  5355. Offset    Size    Description
  5356.  00h    WORD    event type (see above)
  5357.  02h    WORD    ASCII code page 850 translation of keystroke
  5358.         or grow/shrink amount in paragraphs or 0000h if error
  5359.         or alarm expiration data
  5360.  04h    BYTE    scan code from BIOS
  5361.  05h    BYTE    shift key states at time keystroke is retrieved
  5362.  06h    WORD    LICS translation of keystroke
  5363.  08h    BYTE    function key number (1-2-3 only)
  5364.  09h    DWORD    pointer to 1-2-3 bridge record (see INT 60/DI=0104h)
  5365.         or pointer to time change structure (see below)
  5366. Note:    if the System Manager is awaiting the conclusion of a bridge service
  5367.       or grow/shrink call and the event type field is set to FFFFh on
  5368.       entry, the SysMgr will resume
  5369.  
  5370. Format of time change structure:
  5371. Offset    Size    Description
  5372.  00h    WORD    old year
  5373.  02h    BYTE    old month
  5374.  03h    BYTE    old date
  5375.  04h    BYTE    old day
  5376.  05h    BYTE    old hour
  5377.  06h    BYTE    old minute
  5378.  07h    BYTE    old second
  5379.  08h    BYTE    old hundredth of a second
  5380.  09h  9 BYTEs    new time in same format as old time
  5381. --------b-60----DI0101-----------------------
  5382. INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
  5383.     DI = 0101h
  5384.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5385.         DWORD pointer to event record (INT 60/DI=0100h)
  5386. Return: event record filled
  5387.     STACK unchanged
  5388. Note:    this call returns immediately if no event is available
  5389. SeeAlso: INT 60/DI=0100h
  5390. --------b-60----DI0102-----------------------
  5391. INT 60 u - HP 95LX System Manager - "SH_STATUS"
  5392.     DI = 0102h
  5393.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5394. Return: ???
  5395.     STACK unchanged
  5396. --------b-60----DI0104-----------------------
  5397. INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
  5398.     DI = 0104h
  5399.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5400.         DWORD pointer to bridge record (see below)
  5401. Return: ???
  5402.     STACK unchanged
  5403.  
  5404. Values for function code:
  5405.  00h    test
  5406.  01h    get range
  5407.  02h    "GETRANGE_ADDR"
  5408.  03h    "SETRANGE_ADDR"
  5409.  04h    "GETRANGE_DATA"
  5410.  05h    "SETRANGE_DATA"
  5411.  06h    recalculate
  5412.  07h    get cursor
  5413.  08h    set cursor
  5414.  09h    redisplay
  5415.  0Ah    cell type
  5416.  0Bh    "CALCTYPE"
  5417.  
  5418. Format of bridge record:
  5419. Offset    Size    Description
  5420.  00h    WORD    function code (see above)
  5421.  02h    WORD    return code from 1-2-3
  5422.  04h 16 BYTEs    ASCII range name
  5423.  14h    WORD    start column of range
  5424.  16h    WORD    start row of range
  5425.  18h    WORD    end column of range
  5426.  1Ah    WORD    end row of range
  5427.  1Ch    WORD    order in which data is placed in buffer
  5428.  1Eh    WORD    buffer size
  5429.  20h    WORD    offset within bridge record's segment of buffer for cell data
  5430. --------b-60----DI0105-----------------------
  5431. INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
  5432.     DI = 0105h
  5433.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5434. Return: ???
  5435.     STACK unchanged
  5436. --------b-60----DI0106-----------------------
  5437. INT 60 u - HP 95LX System Manager - YIELD CPU
  5438.     DI = 0106h
  5439.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5440.         DWORD pointer to ???
  5441. Return: ???
  5442.     STACK unchanged
  5443. SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
  5444. --------b-60----DI0107-----------------------
  5445. INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
  5446.     DI = 0107h
  5447.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5448.         DWORD pointer to ???
  5449. Return: ???
  5450.     STACK unchanged
  5451. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5452. --------b-60----DI0200-----------------------
  5453. INT 60 u - HP 95LX System Manager - SETUP MENU
  5454.     DI = 0200h
  5455.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5456.         DWORD    pointer to menu data (see below)
  5457.         DWORD    pointer to ???
  5458.         WORD    number of items on menu???
  5459.         WORD    ???
  5460.         DWORD    pointer to ???
  5461.         WORD    ???
  5462.         DWORD    pointer to ???
  5463. Return: ???
  5464.     STACK unchanged
  5465. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
  5466.  
  5467. Format of menu data:
  5468. Offset    Size    Description
  5469.  00h 80 BYTEs    first line of menu text
  5470.  50h 80 BYTEs    second line of menu text
  5471.  A0h 80 BYTEs    third line of menu text
  5472.  F0h    WORD    number of keywords
  5473.  F2h    WORD    index of currently highlighted keyword or FFFFh
  5474.  F4h    WORD    single prompt on top line if nonzero
  5475.  F6h 20 BYTEs    which line each of 20 keywords is located on
  5476. 10Ah 20 BYTEs    offset of each of 20 keywords within its line
  5477. 11Eh 20 BYTEs    length of each of 20 keywords
  5478. 132h 20 BYTEs    first letter of each of 20 keywords
  5479. 146h 20 WORDs    offsets of long prompts for each of 20 keywords
  5480. --------b-60----DI0201-----------------------
  5481. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
  5482.     DI = 0201h
  5483.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5484.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5485. Return: ???
  5486.     STACK unchanged
  5487. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
  5488. --------b-60----DI0202-----------------------
  5489. INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
  5490.     DI = 0202h
  5491.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5492.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5493. Return: ???
  5494.     STACK unchanged
  5495. SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
  5496. --------b-60----DI0203-----------------------
  5497. INT 60 u - HP 95LX System Manager - REMOVE MENU
  5498.     DI = 0203h
  5499.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5500.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5501. Return: ???
  5502.     STACK unchanged
  5503. SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
  5504. --------b-60----DI0204-----------------------
  5505. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
  5506.     DI = 0204h
  5507.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5508.         DWORD    pointer to menu data (see INT 60/DI=0200h)
  5509.         WORD    keystroke
  5510.         DWORD    pointer to WORD to receive selection number
  5511. Return: buffer for selection number filled with index of selected menu item or
  5512.       FFFFh if no final selection yet
  5513.     STACK unchanged
  5514. SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
  5515. --------b-60----DI0205-----------------------
  5516. INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
  5517.     DI = 0205h
  5518.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5519.         DWORD    pointer to file menu structure (see below)
  5520.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5521.         DWORD    pointer to wildcard filespec for initial file list
  5522.         WORD    row???
  5523.         WORD    column???
  5524. Return: ???
  5525.     STACK unchanged
  5526. SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
  5527.  
  5528. Format of file menu structure:
  5529. Offset    Size    Description
  5530.  00h    DWORD    pointer to ASCIZ base directory name
  5531.  04h    DWORD    pointer to ASCIZ file pattern (wildcard filespec)
  5532.  08h    DWORD    pointer to file list workspace, at least 1024 bytes (see below)
  5533.  0Ch    WORD    size of file list workspace in bytes
  5534.  0Eh    WORD    starting row (-3 is topmost, 0 is first non-"reserved" line)
  5535.  10h    WORD    starting column
  5536.  12h    WORD    number of lines
  5537.  14h    WORD    number of columns
  5538.  16h    WORD    number of files displayed on each line
  5539. ---the remaining fields are initialized by the System Manager---
  5540.  18h    WORD    0000h if first edit character, else multiline
  5541.  1Ah    WORD    number of files in file list
  5542.  1Ch    WORD    max files workspace has room for
  5543.  1Eh    WORD    file at top of list
  5544.  20h    WORD    index of file to highlight
  5545.  22h    WORD    index of file to unhighlight
  5546.  24h    WORD    current focus (01h FMENU, 02h EDIT)
  5547.  
  5548. Format of file list workspace entry:
  5549. Offset    Size    Description
  5550.  00h    BYTE    file attributes
  5551.  01h    WORD    file time (see INT 21/AX=5700h)
  5552.  03h    WORD    file date (see INT 21/AX=5700h)
  5553.  05h    DWORD    file size
  5554.  09h 13 BYTEs    ASCIZ filename
  5555. --------b-60----DI0206-----------------------
  5556. INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
  5557.     DI = 0206h
  5558.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5559.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5560.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5561. Return: ???
  5562.     STACK unchanged
  5563. SeeAlso: INT 60/DI=0205h
  5564. --------b-60----DI0207-----------------------
  5565. INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
  5566.     DI = 0207h
  5567.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5568.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5569.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5570.         WORD    keystroke
  5571. Return: AX = status
  5572.         0000h keystroke processed, call INT 60/DI=0206h to refresh menu
  5573.         0001h redisplay application area before refreshing menu
  5574.         0002h user confirmed selection, filename is in edit record's buffer
  5575.         0003h user aborted menu
  5576.         FFFBh bad filename
  5577.         FFFCh bad directory
  5578.         FFFDh bad drive
  5579.         FFFEh unknown keystroke
  5580.         FFFFh keystroke known but invalid in current context
  5581.     STACK unchanged
  5582. SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
  5583. --------b-60----DI0208-----------------------
  5584. INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
  5585.     DI = 0208h
  5586.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5587.         DWORD    pointer to file menu structure (see INT 60/DI=0205h)
  5588.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5589. Return: ???
  5590.     STACK unchanged
  5591. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
  5592. --------b-60----DI0300-----------------------
  5593. INT 60 u - HP 95LX System Manager - DISPLAY STRING
  5594.     DI = 0300h
  5595.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5596.         WORD    starting row (-3 is topmost, 0 is first user line)
  5597.         WORD    starting column
  5598.         DWORD    pointer to string
  5599.         WORD    length of string
  5600.         WORD    display style: 0000h normal, 0001h reverse video
  5601.         WORD    "OSTYLE"
  5602. Return: ???
  5603.     STACK unchanged
  5604. SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
  5605. --------b-60----DI0301-----------------------
  5606. INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
  5607.     DI = 0301h
  5608.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5609.         WORD    starting row (-3 is topmost, 0 is first user line)
  5610.         WORD    starting column
  5611.         WORD    number of rows
  5612.         WORD    number of columns
  5613. Return: ???
  5614.     STACK unchanged
  5615. SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
  5616. --------b-60----DI0302-----------------------
  5617. INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
  5618.     DI = 0302h
  5619.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5620.         WORD    starting row???
  5621.         WORD    starting column???
  5622.         WORD    height of scroll region???
  5623.         WORD    width of scroll region???
  5624.         WORD    number of lines to scroll region???
  5625. Return: ???
  5626.     STACK unchanged
  5627. SeeAlso: INT 60/DI=0301h
  5628. --------b-60----DI0303-----------------------
  5629. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
  5630.     DI = 0303h
  5631.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5632.         WORD    ???
  5633.         WORD    ???
  5634.         WORD    ???
  5635.         WORD    ???
  5636.         DWORD    pointer to ???
  5637. Return: ???
  5638.     STACK unchanged
  5639. --------b-60----DI0304-----------------------
  5640. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
  5641.     DI = 0304h
  5642.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5643.         DWORD    pointer to ???
  5644.         WORD    ???
  5645. Return: ???
  5646.     STACK unchanged
  5647. --------b-60----DI0305-----------------------
  5648. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
  5649.     DI = 0305h
  5650.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5651.         WORD    ???
  5652.         WORD    ???
  5653.         DWORD    pointer to ???
  5654.         WORD    ???
  5655. Return: ???
  5656.     STACK unchanged
  5657. --------b-60----DI0307-----------------------
  5658. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
  5659.     DI = 0307h
  5660.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5661.         WORD    ???
  5662.         WORD    ???
  5663.         WORD    ???
  5664. Return: ???
  5665.     STACK unchanged
  5666. --------b-60----DI0308-----------------------
  5667. INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
  5668.     DI = 0308h
  5669.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5670. Return: ???
  5671.     STACK unchanged
  5672. --------b-60----DI0309-----------------------
  5673. INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
  5674.     DI = 0309h
  5675.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5676.         WORD    new mode
  5677. Return: ???
  5678.     STACK unchanged
  5679. --------b-60----DI030A-----------------------
  5680. INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
  5681.     DI = 030Ah
  5682.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5683. Return: ???
  5684.     STACK unchanged
  5685. --------b-60----DI030B-----------------------
  5686. INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
  5687.     DI = 030Bh
  5688.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5689.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  5690.         WORD    column
  5691. Return: ???
  5692.     STACK unchanged
  5693. Note:    cursor is hidden if the specified position is not on the physical
  5694.       display
  5695. SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5696. --------b-60----DI0400-----------------------
  5697. INT 60 u - HP 95LX System Manager - "EDIT_INIT"
  5698.     DI = 0400h
  5699.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5700.         DWORD    pointer to edit record (see below)
  5701.         DWORD    pointer to string to be edited
  5702.         WORD    initial length of string being edited
  5703.         WORD    maximum length of edited string
  5704.         WORD    row of edit field
  5705.         WORD    leftmost column of edit field
  5706. Return: ???
  5707.     STACK unchanged
  5708.  
  5709. Format of edit record:
  5710. Offset    Size    Description
  5711.  00h    WORD    current length of edit buffer
  5712.  02h    BYTE    flag for special processing on first character
  5713.  03h    BYTE    flags
  5714.         bit 0: tab handling
  5715.  04h    WORD    editing in prompt window?
  5716.  06h    DWORD    pointer to top line of prompt window message
  5717.  0Ah    WORD    length of top line of prompt
  5718.  0Ch    DWORD    pointer to second line of prompt window message
  5719.  10h    WORD    length of second line of prompt
  5720.  12h 80 BYTEs    workspace for editing
  5721.  62h  2 WORDs    line array needed for multi-line editing
  5722.  66h 36 BYTEs    multi-line edit record (see below)
  5723.  8Ah    WORD    displayable columns
  5724.  
  5725. Format of multi-line edit record:
  5726. Offset    Size    Description
  5727.  00h    DWORD    pointer to user-supplied edit buffer
  5728.  04h    WORD    length of edit buffer
  5729.  06h    WORD    current cursor position
  5730.  08h    WORD    starting row of edit area (-3 is topmost, 0 is first user line)
  5731.  0Ah    WORD    starting column of edit area
  5732.  0Ch    WORD    height of edit area
  5733.  0Eh    WORD    width of edit area
  5734.  10h    WORD    current top row (-3 is topmost, 0 is first user line)
  5735.  12h    WORD    number of rows displayable
  5736.  14h    BYTE    cursor column
  5737.  15h    BYTE    01h if buffer has been modified
  5738.  16h    BYTE    first displayable column (ticker fields only)
  5739.  17h    BYTE    01h if wordwrap enabled, FFh if ticker field
  5740.  18h    DWORD    pointer to array of line starts (at least one bigger than edit
  5741.           area is high)
  5742.  1Ch    BYTE    currently marking?
  5743.  1Dh    BYTE    flag
  5744.  1Eh    WORD    offset of mark start
  5745.  20h    WORD    offset of mark end (inclusive)
  5746.  22h    WORD    displayable columns
  5747. --------b-60----DI0401-----------------------
  5748. INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
  5749.     DI = 0401h
  5750.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5751.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5752.         DWORD    pointer to string to edit
  5753.         WORD    initial length of string being edited
  5754.         WORD    maximum length of edited string
  5755.         DWORD    pointer to first line of prompt
  5756.         WORD    length of first line
  5757.         DWORD    pointer to second line of prompt
  5758.         WORD    length of second line
  5759. Return: ???
  5760.     STACK unchanged
  5761. --------b-60----DI0402-----------------------
  5762. INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
  5763.     DI = 0402h
  5764.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5765.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5766. Return: ???
  5767.     STACK unchanged
  5768. --------b-60----DI0403-----------------------
  5769. INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
  5770.     DI = 0403h
  5771.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5772.         DWORD    pointer to edit record (see INT 60/DI=0400h)
  5773.         WORD    keystroke
  5774.         DWORD    pointer to WORD buffer for result code
  5775. Return: result code buffer filled with 0001h if editing complete
  5776.     STACK unchanged
  5777. --------b-60----DI0404-----------------------
  5778. INT 60 u - HP 95LX System Manager - "MDIT_INI"
  5779.     DI = 0404h
  5780.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5781.         DWORD    pointer to ???
  5782.         WORD    ???
  5783.         WORD    ???
  5784.         WORD    ???
  5785.         WORD    ???
  5786.         DWORD    pointer to ???
  5787.         WORD    ???
  5788.         WORD    ???
  5789.         WORD    ???
  5790.         DWORD    pointer to ???
  5791. Return: ???
  5792.     STACK unchanged
  5793. --------b-60----DI0405-----------------------
  5794. INT 60 u - HP 95LX System Manager - "MDIT_DIS"
  5795.     DI = 0405h
  5796.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5797.         DWORD    pointer to ???
  5798. Return: ???
  5799.     STACK unchanged
  5800. --------b-60----DI0406-----------------------
  5801. INT 60 u - HP 95LX System Manager - "MDIT_KEY"
  5802.     DI = 0406h
  5803.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5804.         DWORD    pointer to ???
  5805.         WORD    ???
  5806. Return: ???
  5807.     STACK unchanged
  5808. --------b-60----DI0407-----------------------
  5809. INT 60 u - HP 95LX System Manager - "MDIT_FIL"
  5810.     DI = 0407h
  5811.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5812.         DWORD    pointer to ???
  5813.         DWORD    pointer to ???
  5814. Return: ???
  5815.     STACK unchanged
  5816. --------b-60----DI0408-----------------------
  5817. INT 60 u - HP 95LX System Manager - "MDIT_MARK"
  5818.     DI = 0408h
  5819.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5820.         DWORD    pointer to ???
  5821. Return: ???
  5822.     STACK unchanged
  5823. --------b-60----DI0409-----------------------
  5824. INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
  5825.     DI = 0409h
  5826.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5827.         DWORD    pointer to ???
  5828. Return: ???
  5829.     STACK unchanged
  5830. --------b-60----DI040A-----------------------
  5831. INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
  5832.     DI = 040Ah
  5833.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5834.         DWORD    pointer to ???
  5835. Return: ???
  5836.     STACK unchanged
  5837. --------b-60----DI040B-----------------------
  5838. INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
  5839.     DI = 040Bh
  5840.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5841.         DWORD    pointer to ???
  5842.         DWORD    pointer to ???
  5843.         WORD    ???
  5844. Return: ???
  5845.     STACK unchanged
  5846. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  5847. --------b-60----DI0500-----------------------
  5848. INT 60 u - HP 95LX System Manager - OPEN FILE
  5849.     DI = 0500h
  5850.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5851.         DWORD    pointer to file state record (see below)
  5852.         DWORD    pointer to filename
  5853.         WORD    length of filename
  5854.         WORD    ???
  5855.         WORD    suppress buffering if nonzero
  5856. Return: AX = status
  5857.     STACK unchanged
  5858. SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
  5859.  
  5860. Format of file state record:
  5861. Offset    Size    Description
  5862.  00h    WORD    DOS file handle
  5863.  02h    WORD    flags
  5864.         bit 0: buffer contents valid
  5865.         bit 1: buffer is dirty and must be written
  5866.         bit 2: unbuffered I/O
  5867.         bit 3: file is a character device
  5868.  04h    DWORD    current DOS physical file offset (FFFFFFFFh if unknown)
  5869.  08h    DWORD    DOS file offset of start of buffer
  5870.  0Ch    DWORD    effective file offset as seen by caller
  5871.  10h    WORD    number of bytes in file buffer
  5872. ---buffered I/O only---
  5873.  12h 512 BYTEs    file buffer
  5874. --------b-60----DI0501-----------------------
  5875. INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
  5876.     DI = 0501h
  5877.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5878.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5879.         DWORD    pointer to filename
  5880.         WORD    length of filename
  5881.         WORD    ???
  5882.         WORD    suppress buffering if nonzero
  5883. Return: AX = status
  5884.     STACK unchanged
  5885. SeeAlso: INT 60/DI=0500h
  5886. --------b-60----DI0502-----------------------
  5887. INT 60 u - HP 95LX System Manager - CREATE NEW FILE
  5888.     DI = 0502h
  5889.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5890.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5891.         DWORD    pointer to filename
  5892.         WORD    length of filename
  5893.         WORD    ???
  5894.         WORD    suppress buffering if nonzero
  5895. Return: AX = status
  5896.     STACK unchanged
  5897. SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
  5898. --------b-60----DI0503-----------------------
  5899. INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
  5900.     DI = 0503h
  5901.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5902.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5903.         DWORD    pointer to filename
  5904.         WORD    length of filename
  5905.         WORD    ???
  5906.         WORD    suppress buffering if nonzero
  5907. Return: AX = status
  5908.     STACK unchanged
  5909. SeeAlso: INT 60/DI=0502h
  5910. --------b-60----DI0504-----------------------
  5911. INT 60 u - HP 95LX System Manager - READ FROM FILE
  5912.     DI = 0504h
  5913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5914.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5915.         DWORD    pointer to data buffer
  5916.         WORD    number of bytes to read
  5917.         DWORD    pointer to WORD in which to return actual bytes read
  5918. Return: ???
  5919.     STACK unchanged
  5920. SeeAlso: INT 60/DI=0505h
  5921. --------b-60----DI0505-----------------------
  5922. INT 60 - HP 95LX System Manager - WRITE TO FILE
  5923.     DI = 0505h
  5924.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5925.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5926.         DWORD    pointer to data
  5927.         WORD    length of data
  5928. Return: AX = status
  5929.     STACK unchanged
  5930. SeeAlso: INT 60/DI=0504h
  5931. --------b-60----DI0506-----------------------
  5932. INT 60 u - HP 95LX System Manager - SET FILE POSITION
  5933.     DI = 0506h
  5934.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5935.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5936.         WORD    ???
  5937.         WORD    ???
  5938. Return: ???
  5939.     STACK unchanged
  5940. SeeAlso: INT 60/DI=0507h
  5941. --------b-60----DI0507-----------------------
  5942. INT 60 u - HP 95LX System Manager - GET FILE POSITION
  5943.     DI = 0507h "M_TELL"
  5944.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5945.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5946.         DWORD    pointer to DWORD buffer for file position???
  5947. Return: ???
  5948.     STACK unchanged
  5949. SeeAlso: INT 60/DI=0506h
  5950. --------b-60----DI0508-----------------------
  5951. INT 60 u - HP 95LX System Manager - CLOSE FILE
  5952.     DI = 0508h
  5953.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5954.         DWORD    pointer to file state record (see INT 60/DI=0500h)
  5955. Return: ???
  5956.     STACK unchanged
  5957. SeeAlso: INT 60/DI=0500h
  5958. --------b-60----DI0509-----------------------
  5959. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
  5960.     DI = 0509h
  5961.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5962.         DWORD    pointer to ???
  5963.         DWORD    pointer to ???
  5964.         WORD    ???
  5965.         WORD    ???
  5966. Return: ???
  5967.     STACK unchanged
  5968. --------b-60----DI050A-----------------------
  5969. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
  5970.     DI = 050Ah
  5971.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5972.         DWORD    pointer to ???
  5973.         DWORD    pointer to ???
  5974. Return: ???
  5975.     STACK unchanged
  5976.  
  5977. Format of pattern match control block:
  5978. Offset    Size    Description
  5979.  00h 43 BYTEs    FindFirst data block (see INT 21/AH=4Eh)
  5980.  2Bh 80 BYTEs    full path name
  5981.  7Bh    BYTE    offset of last component of filename
  5982.  7Ch    BYTE    DOS function number (4Eh or 4Fh)
  5983. --------b-60----DI050B-----------------------
  5984. INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
  5985.     DI = 050Bh
  5986.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  5987.         DWORD    pointer to ???
  5988.         WORD    ???
  5989.         WORD    ???
  5990.         DWORD    pointer to ???
  5991. Return: ???
  5992.     STACK unchanged
  5993.  
  5994. Values returned:
  5995.  0000h nonexistent
  5996.  0001h file
  5997.  0002h directory
  5998.  0003h character device
  5999. --------b-60----DI050C-----------------------
  6000. INT 60 u - HP 95LX System Manager - DELETE FILE
  6001.     DI = 050Ch "M_DELETE"
  6002.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6003.         DWORD    pointer to ???
  6004.         WORD    ???
  6005.         WORD    ???
  6006. Return: ???
  6007.     STACK unchanged
  6008. --------b-60----DI050D-----------------------
  6009. INT 60 u - HP 95LX System Manager - RENAME FILE
  6010.     DI = 050Dh
  6011.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6012.         DWORD    pointer to ???
  6013.         WORD    ???
  6014.         WORD    ???
  6015.         DWORD    pointer to ???
  6016.         WORD    ???
  6017.         WORD    ???
  6018. Return: ???
  6019.     STACK unchanged
  6020. --------b-60----DI050E-----------------------
  6021. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
  6022.     DI = 050Eh
  6023.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6024.         WORD    ???
  6025.         DWORD    pointer to ???
  6026.         DWORD    pointer to ???
  6027. Return: ???
  6028.     STACK unchanged
  6029. --------b-60----DI050F-----------------------
  6030. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
  6031.     DI = 050Fh
  6032.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6033.         DWORD    pointer to ???
  6034.         WORD    ???
  6035. Return: ???
  6036.     STACK unchanged
  6037. --------b-60----DI0510-----------------------
  6038. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
  6039.     DI = 0510h
  6040.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6041.         DWORD    pointer to ???
  6042.         DWORD    pointer to ???
  6043. Return: ???
  6044.     STACK unchanged
  6045. --------b-60----DI0511-----------------------
  6046. INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
  6047.     DI = 0511h
  6048.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6049.         DWORD    pointer to ???
  6050.         WORD    ???
  6051.         WORD    ???
  6052. Return: ???
  6053.     STACK unchanged
  6054. --------b-60----DI0512-----------------------
  6055. INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
  6056.     DI = 0512h
  6057.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6058.         DWORD    pointer to ???
  6059.         WORD    ???
  6060.         WORD    ???
  6061. Return: ???
  6062.     STACK unchanged
  6063. --------b-60----DI0513-----------------------
  6064. INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
  6065.     DI = 0513h
  6066.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6067.         DWORD    pointer to ??? buffer for current drive
  6068. Return: ???
  6069.     STACK unchanged
  6070. --------b-60----DI0514-----------------------
  6071. INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
  6072.     DI = 0514h
  6073.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6074.         WORD    new drive
  6075. Return: ???
  6076.     STACK unchanged
  6077. --------b-60----DI0515-----------------------
  6078. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
  6079.     DI = 0515h
  6080.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6081.         DWORD    pointer to ???
  6082.         DWORD    pointer to ???
  6083. Return: ???
  6084.     STACK unchanged
  6085. --------b-60----DI0516-----------------------
  6086. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
  6087.     DI = 0516h
  6088.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6089.         DWORD    pointer to ???
  6090. Return: ???
  6091.     STACK unchanged
  6092. --------b-60----DI0517-----------------------
  6093. INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
  6094.     DI = 0517h
  6095.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6096.         DWORD    pointer to ???
  6097.         WORD    ???
  6098.         WORD    ???
  6099.         DWORD    pointer to ??? buffer for file's attributes???
  6100. Return: ???
  6101.     STACK unchanged
  6102. --------b-60----DI0518-----------------------
  6103. INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
  6104.     DI = 0518h
  6105.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6106.         DWORD    pointer to ???
  6107.         WORD    ???
  6108.         WORD    ???
  6109.         WORD    new attributes???
  6110. Return: ???
  6111.     STACK unchanged
  6112. --------b-60----DI0519-----------------------
  6113. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
  6114.     DI = 0519h
  6115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6116.         DWORD    pointer to ???
  6117.         DWORD    pointer to ???
  6118.         WORD    ???
  6119.         WORD    ???
  6120.         WORD    ???
  6121.         WORD    ???
  6122.         WORD    ???
  6123. Return: ???
  6124.     STACK unchanged
  6125. --------b-60----DI051A-----------------------
  6126. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
  6127.     DI = 051Ah
  6128.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6129.         DWORD    pointer to ???
  6130.         DWORD    pointer to ???
  6131. Return: ???
  6132.     STACK unchanged
  6133. --------b-60----DI051B-----------------------
  6134. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
  6135.     DI = 051Bh
  6136.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6137.         DWORD    pointer to ???
  6138.         DWORD    pointer to ???
  6139. Return: ???
  6140.     STACK unchanged
  6141. --------b-60----DI051C-----------------------
  6142. INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
  6143.     DI = 051Ch
  6144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6145.         DWORD    pointer to ???
  6146.         WORD    ???
  6147. Return: ???
  6148.     STACK unchanged
  6149. --------b-60----DI0600-----------------------
  6150. INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
  6151.     DI = 0600h
  6152.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6153. Return: ???
  6154.     STACK unchanged
  6155. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
  6156. --------b-60----DI0601-----------------------
  6157. INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
  6158.     DI = 0601h
  6159.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6160. Return: never
  6161.     STACK unchanged
  6162. SeeAlso: INT 21/AH=4Ch,INT 60/DI=0600h
  6163. --------b-60----DI0602-----------------------
  6164. INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
  6165.     DI = 0602h
  6166.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6167. Return: ???
  6168.     STACK unchanged
  6169. SeeAlso: INT 15/AX=101Bh,INT 60/DI=0603h
  6170. --------b-60----DI0603-----------------------
  6171. INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
  6172.     DI = 0603h
  6173.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6174. Return: ???
  6175.     STACK unchanged
  6176. SeeAlso: INT 15/AX=101Ch,INT 60/DI=0602h
  6177. --------b-60----DI0604-----------------------
  6178. INT 60 u - HP 95LX System Manager - "M_SPAWN"
  6179.     DI = 0604h
  6180.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6181.         DWORD    pointer to ???
  6182.         WORD    ???
  6183.         WORD    ???
  6184.         DWORD    pointer to ???
  6185. Return: ???
  6186.     STACK unchanged
  6187. --------b-60----DI0605-----------------------
  6188. INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
  6189.     DI = 0605h
  6190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6191. Return: ???
  6192.     STACK unchanged
  6193. --------b-60----DI0606-----------------------
  6194. INT 60 u - HP 95LX System Manager - "M_REBOOT"
  6195.     DI = 0606h
  6196.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6197. Return: ???
  6198.     STACK unchanged
  6199. --------b-60----DI0607-----------------------
  6200. INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
  6201.     DI = 0607h
  6202.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6203.         DWORD    pointer to ???
  6204.         WORD    ???
  6205.         DWORD    pointer to ???
  6206.         WORD    ???
  6207. Return: ???
  6208.     STACK unchanged
  6209. --------b-60----DI0608-----------------------
  6210. INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
  6211.     DI = 0608h
  6212.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6213.         DWORD    pointer to ???
  6214. Return: ???
  6215.     STACK unchanged
  6216. --------b-60----DI0609-----------------------
  6217. INT 60 u - HP 95LX System Manager - "M_APP_NAME"
  6218.     DI = 0609h
  6219.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6220.         DWORD    pointer to ???
  6221. Return: DX:AX -> ???
  6222.     STACK unchanged
  6223. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6224. --------b-60----DI0700-----------------------
  6225. INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
  6226.     DI = 0700h
  6227.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6228. Return: ???
  6229.     STACK unchanged
  6230. SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
  6231.  
  6232. Values for error code:
  6233.  0000h    successful
  6234.  FFF8h    transfer request out of bounds
  6235.  FFF9h    no such representation
  6236.  FFFAh    no representation open
  6237.  FFFBh    a representation is already open
  6238.  FFFCh    representation already exists
  6239.  FFFDh    heap allocation failure
  6240.  FFFEh    clipboard not open
  6241.  FFFFh    clipboard access denied
  6242. --------b-60----DI0701-----------------------
  6243. INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
  6244.     DI = 0701h
  6245.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6246. Return: ???
  6247.     STACK unchanged
  6248. SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
  6249. --------b-60----DI0702-----------------------
  6250. INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
  6251.     DI = 0702h
  6252.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6253.         DWORD    pointer to ???
  6254. Return: ???
  6255.     STACK unchanged
  6256. SeeAlso: INT 60/DI=0700h
  6257. --------b-60----DI0704-----------------------
  6258. INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
  6259.     DI = 0704h
  6260.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6261.         DWORD    pointer to ???
  6262. Return: ???
  6263.     STACK unchanged
  6264. SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
  6265. --------b-60----DI0705-----------------------
  6266. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
  6267.     DI = 0705h
  6268.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6269. Return: ???
  6270.     STACK unchanged
  6271. SeeAlso: INT 60/DI=0704h
  6272. --------b-60----DI0706-----------------------
  6273. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
  6274.     DI = 0706h
  6275.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6276.         WORD    ???
  6277.         DWORD    pointer to ???
  6278.         DWORD    pointer to ???
  6279. Return: ???
  6280.     STACK unchanged
  6281. SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
  6282. --------b-60----DI0707-----------------------
  6283. INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
  6284.     DI = 0707h
  6285.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6286.         DWORD    pointer to ???
  6287.         DWORD    pointer to ???
  6288.         DWORD    pointer to ???
  6289. Return: ???
  6290.     STACK unchanged
  6291. SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
  6292. --------b-60----DI0708-----------------------
  6293. INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
  6294.     DI = 0708h
  6295.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6296.         DWORD    pointer to data to be written???
  6297.         WORD    length of data???
  6298. Return: ???
  6299.     STACK unchanged
  6300. SeeAlso: INT 60/DI=0709h
  6301. --------b-60----DI0709-----------------------
  6302. INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
  6303.     DI = 0709h
  6304.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6305.         WORD    ???
  6306.         WORD    ???
  6307.         DWORD    pointer to buffer for data???
  6308.         WORD    length of buffer???
  6309. Return: ???
  6310.     STACK unchanged
  6311. SeeAlso: INT 60/DI=0708h
  6312. --------b-60----DI0800-----------------------
  6313. INT 60 u - HP 95LX System Manager - BEEP
  6314.     DI = 0800h
  6315.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6316. Return: ???
  6317.     STACK unchanged
  6318. SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
  6319. --------b-60----DI0801-----------------------
  6320. INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
  6321.     DI = 0801h
  6322.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6323. Return: ???
  6324.     STACK unchanged
  6325. SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
  6326. --------b-60----DI0802-----------------------
  6327. INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
  6328.     DI = 0802h
  6329.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6330.         WORD    pattern number (00h-06h)
  6331. Return: ???
  6332.     STACK unchanged
  6333. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
  6334. --------b-60----DI0803-----------------------
  6335. INT 60 u - HP 95LX System Manager - TURN OFF SOUND
  6336.     DI = 0803h
  6337.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6338. Return: ???
  6339.     STACK unchanged
  6340. SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
  6341. --------b-60----DI0900-----------------------
  6342. INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
  6343.     DI = 0900h
  6344.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6345.         WORD    size of block in bytes
  6346. Return: AX -> memory block
  6347.     STACK unchanged
  6348. Note:    System Manager-compliant applications are always small-model (64K code,
  6349.       64K data)
  6350. SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
  6351. --------b-60----DI0902-----------------------
  6352. INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
  6353.     DI = 0902h
  6354.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6355.         WORD    offset of memory block???
  6356. Return: ???
  6357.     STACK unchanged
  6358. Note:    System Manager-compliant applications are always small-model (64K code,
  6359.       64K data)
  6360. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6361. --------b-60----DI0903-----------------------
  6362. INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
  6363.     DI = 0903h
  6364.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6365.         WORD    size of block in bytes???
  6366. Return: AX -> memory block???
  6367.     STACK unchanged
  6368. SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
  6369. --------b-60----DI0904-----------------------
  6370. INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
  6371.     DI = 0904h
  6372.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6373.         WORD    segment of memory block???
  6374. Return: AX -> ???
  6375.     STACK unchanged
  6376. SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
  6377. --------b-60----DI0B00-----------------------
  6378. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
  6379.     DI = 0B00h
  6380.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6381.         DWORD    pointer to ???
  6382. Return: ???
  6383.     STACK unchanged
  6384. --------b-60----DI0B01-----------------------
  6385. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
  6386.     DI = 0B01h
  6387.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6388.         DWORD    pointer to ???
  6389. Return: ???
  6390.     STACK unchanged
  6391. --------b-60----DI0B02-----------------------
  6392. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
  6393.     DI = 0B02h
  6394.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6395.         DWORD    pointer to ???
  6396. Return: ???
  6397.     STACK unchanged
  6398. --------b-60----DI0B03-----------------------
  6399. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
  6400.     DI = 0B03h
  6401.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6402.         WORD    ???
  6403. Return: ???
  6404.     STACK unchanged
  6405. --------b-60----DI0B04-----------------------
  6406. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
  6407.     DI = 0B04h
  6408.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6409.         DWORD    pointer to alarm record???
  6410.         WORD    ???
  6411. Return: ???
  6412.     STACK unchanged
  6413.  
  6414. Format of alarm record:
  6415. Offset    Size    Description
  6416.  00h    BYTE    hour
  6417.  01h    BYTE    minute
  6418.  02h    BYTE    second
  6419.  03h    BYTE    unused padding
  6420.  04h    WORD    rescheduling interval, in seconds
  6421.  06h    BYTE    are seconds significant?
  6422.  07h    BYTE    alarm sound
  6423.  08h 40 BYTEs    message displayed when alarm activates
  6424.  30h    BYTE    task ID of owner
  6425.  31h    BYTE    application's own use for sub-class
  6426.  32h  4 BYTEs    application's own use for private data
  6427. --------b-60----DI0B05-----------------------
  6428. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
  6429.     DI = 0B05h
  6430.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6431.         DWORD    pointer to ???
  6432. Return: ???
  6433.     STACK unchanged
  6434. --------b-60----DI0B06-----------------------
  6435. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
  6436.     DI = 0B06h
  6437.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6438.         DWORD    pointer to ???
  6439.         DWORD    pointer to ???
  6440.         DWORD    pointer to ???
  6441. Return: ???
  6442.     STACK unchanged
  6443. --------b-60----DI0B07-----------------------
  6444. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
  6445.     DI = 0B07h
  6446.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6447.         DWORD    pointer to ???
  6448. Return: ???
  6449.     STACK unchanged
  6450. --------b-60----DI0B08-----------------------
  6451. INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
  6452.     DI = 0B08h
  6453.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6454.         WORD    timestamp format (see below)
  6455.         WORD    row (-3 is topmost, 0 is first non-reserved line)
  6456.         WORD    column
  6457. Return: ???
  6458.     STACK unchanged
  6459.  
  6460. Bitfields for timestamp format:
  6461. Bit(s)    Description
  6462.  1-0    timestamp components
  6463.     00 date only
  6464.     01 time only
  6465.     10 date and time
  6466.     11 day and date
  6467.  4    supply am/pm
  6468.  5    supply seconds
  6469.  6    show year
  6470.  7    four-digit year
  6471. --------b-60----DI0B09-----------------------
  6472. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
  6473.     DI = 0B09h
  6474.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6475.         DWORD    pointer to ???
  6476.         DWORD    pointer to ???
  6477. Return: ???
  6478.     STACK unchanged
  6479. SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
  6480.  
  6481. Format of system settings:
  6482. Offset    Size    Description
  6483.  00h    WORD    country code
  6484.  02h    WORD    speaker volume (00h-03h or FFh for off)
  6485.  04h    WORD    contrast level (00h-0Fh)
  6486.  06h    WORD    week start (00h Sunday, 01h Monday)
  6487.  08h    WORD    punctuation format
  6488.         code    decimal arg    thousands
  6489.         00h    .    ,    ,
  6490.         01h    ,    .    .
  6491.         02h    .    ;    ;
  6492.         03h    ,    ;    .
  6493.         04h    .    ,    " "
  6494.         05h    ,    .    " "
  6495.         06h    .    ;    " "
  6496.         07h    ,    ;    " "
  6497.  0Ah    WORD    two-character language code (only 5355h = "US" byte-swapped)
  6498.  0Ch    WORD    current date format (see below)
  6499.  0Eh    WORD    current time format (see below)
  6500.  10h    WORD    collating sequence
  6501.         00h numbers first, 01h letters first, 02h ASCII
  6502.  12h 80 BYTEs    name of picture file
  6503.  62h 30 BYTEs    name
  6504.  80h 30 BYTEs    title
  6505.  9Eh 28 BYTEs    company name
  6506.  BAh    WORD    number of languages
  6507.  BCh  6 BYTEs    available languages
  6508.  C2h 66 BYTEs    language menu
  6509. 104h  2 BYTEs    ASCIZ date separator
  6510. 106h  2 BYTEs    ASCIZ time separator
  6511. 108h    BYTE    date order
  6512. 109h    BYTE    use 24 hour time?
  6513. 10Ah 16 BYTEs    currency string
  6514. 11Ah    WORD    currency string position (00h prefix, 01h suffix)
  6515. 11Ch    WORD    keyboard (see below)
  6516. 11Eh    WORD    printer baud rate
  6517.         00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
  6518. 120h    WORD    printer driver code
  6519.         00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
  6520. 122h    WORD    printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
  6521. 124h    WORD    system manager interrupt (60h by default)
  6522. 126h    WORD    code page (01h CP850, 02h CP437)
  6523. 128h    WORD    active exit key
  6524. 12Ah    WORD    active menu key
  6525. 12Ch    WORD    active CHAR key toggle
  6526. 12Eh  6 BYTEs    alarm
  6527.  
  6528. Values for current date format:
  6529.  00h    dd-mmm-yy
  6530.  01h    dd-mmm
  6531.  02h    mmm-yy
  6532.  03h    mm/dd/yy
  6533.  04h    dd/mm/yy
  6534.  05h    dd.mm.yy
  6535.  06h    yy-mm-dd
  6536.  07h    mm/dd
  6537.  08h    dd/mm
  6538.  09h    dd.mm
  6539.  0Ah    mm-dd
  6540.  
  6541. Values for current time format:
  6542.  00h    HH:MM:SS am/pm
  6543.  01h    HH:MM am/pm
  6544.  02h    HH:MM:SS
  6545.  03h    HH.MM.SS
  6546.  04h    HH,MM,SS
  6547.  05h    HHhMMmSSs
  6548.  06h    HH:MM
  6549.  07h    HH.MM
  6550.  08h    HH,MM
  6551.  09h    HHhMMm
  6552.  
  6553. Values for keyboard:
  6554.  0001h    Belgium
  6555.  0002h    French Canadian
  6556.  0004h    Denmark
  6557.  0008h    Finland
  6558.  0010h    French
  6559.  0020h    Finland
  6560.  0040h    Italy
  6561.  0080h    Netherlands
  6562.  0100h    Norway
  6563.  0200h    Portugal
  6564.  0400h    Spain
  6565.  0800h    Sweden
  6566.  1000h    Swiss French
  6567.  2000h    Swiss German
  6568.  4000h    United Kingdom
  6569.  8000h    USA
  6570. --------b-60----DI0B0A-----------------------
  6571. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
  6572.     DI = 0B0Ah
  6573.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6574.         DWORD    pointer to ???
  6575.         DWORD    pointer to ???
  6576. Return: ???
  6577.     STACK unchanged
  6578. SeeAlso: INT 60/DI=0B09h
  6579. --------b-60----DI0B0B-----------------------
  6580. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
  6581.     DI = 0B0Bh
  6582.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6583.         DWORD    pointer to ???
  6584. Return: ???
  6585.     STACK unchanged
  6586. SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
  6587. --------b-60----DI0B0C-----------------------
  6588. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
  6589.     DI = 0B0Ch
  6590.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6591.         DWORD    pointer to ???
  6592. Return: ???
  6593.     STACK unchanged
  6594. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
  6595. --------b-60----DI0B0D-----------------------
  6596. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
  6597.     DI = 0B0Dh
  6598.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6599.         DWORD    pointer to ???
  6600.         DWORD    pointer to ???
  6601.         DWORD    pointer to ???
  6602. Return: ???
  6603.     STACK unchanged
  6604. SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
  6605. --------b-60----DI0B0E-----------------------
  6606. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
  6607.     DI = 0B0Eh
  6608.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6609.         WORD    ???
  6610.         WORD    ???
  6611.         WORD    ???
  6612.         DWORD    pointer to ???
  6613.         DWORD    pointer to ???
  6614. Return: DX:AX -> ???
  6615.     STACK unchanged
  6616. --------b-60----DI0B0F-----------------------
  6617. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
  6618.     DI = 0B0Fh
  6619.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6620. Return: DX:AX -> system settings record (see INT 60/DI=0B09h)
  6621.     STACK unchanged
  6622. SeeAlso: INT 60/DI=0B09h
  6623. --------b-60----DI0B10-----------------------
  6624. INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
  6625.     DI = 0B10h
  6626.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6627.         WORD    ???
  6628.         DWORD    pointer to ???
  6629.         DWORD    pointer to ???
  6630. Return: ???
  6631.     STACK unchanged
  6632. --------b-60----DI0B11-----------------------
  6633. INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
  6634.     DI = 0B11h
  6635.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6636.         WORD    ???
  6637.         DWORD    pointer to ???
  6638.         DWORD    pointer to ???
  6639. Return: ???
  6640.     STACK unchanged
  6641. --------b-60----DI0B12-----------------------
  6642. INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
  6643.     DI = 0B12h
  6644.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6645.         WORD    new parsing rule (see below)
  6646. Return: ???
  6647.     STACK unchanged
  6648. SeeAlso: INT 60/DI=0B13h
  6649.  
  6650. Values for new parsing rule:
  6651.  01h    day-month-year
  6652.  02h    month-day-year
  6653.  03h    year-month-day
  6654.  04h    "DMYO"
  6655.  05h    "MDYO"
  6656.  OR with 08h to get any year
  6657. --------b-60----DI0B13-----------------------
  6658. INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
  6659.     DI = 0B13h
  6660.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6661.         WORD    new parsing rule (see below)
  6662. Return: ???
  6663.     STACK unchanged
  6664. SeeAlso: INT 60/DI=0B12h
  6665.  
  6666. Values for new parsing rule:
  6667.  01h    HH:MM:SS (am/pm)
  6668.  02h    HH:MM:SS (24hr)
  6669.  03h    HHMM:SS (24hr)
  6670.  04h    HH:MM:SS.hh (24hr)
  6671.  05h    HH:MM (am/pm)
  6672.  06h    HH:MM (24hr)
  6673.  07h    HHMM (24hr)
  6674. --------b-60----DI0B14-----------------------
  6675. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
  6676.     DI = 0B14h
  6677.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6678. Return: ???
  6679.     STACK unchanged
  6680. --------b-60----DI0B15-----------------------
  6681. INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
  6682.     DI = 0B15h
  6683.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6684.         WORD    ???
  6685. Return: ???
  6686.     STACK unchanged
  6687. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6688. --------b-60----DI0C00-----------------------
  6689. INT 60 u - HP 95LX System Manager - OPEN PRINTER
  6690.     DI = 0C00h
  6691.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6692. Return: ???
  6693.     STACK unchanged
  6694. SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
  6695. --------b-60----DI0C01-----------------------
  6696. INT 60 u - HP 95LX System Manager - CLOSE PRINTER
  6697.     DI = 0C01h
  6698.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6699. Return: ???
  6700.     STACK unchanged
  6701. Note:    relinquishes control of printer
  6702. SeeAlso: INT 60/DI=0C00h
  6703. --------b-60----DI0C02-----------------------
  6704. INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
  6705.     DI = 0C02h
  6706.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6707.         DWORD    pointer to data to be written
  6708.         WORD    length of data
  6709. Return: ???
  6710.     STACK unchanged
  6711. SeeAlso: INT 60/DI=0C00h
  6712. --------b-60----DI0C03-----------------------
  6713. INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
  6714.     DI = 0C03h
  6715.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6716. Return: ???
  6717.     STACK unchanged
  6718. SeeAlso: INT 60/DI=0C00h
  6719. --------b-60----DI0C04-----------------------
  6720. INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
  6721.     DI = 0C04h
  6722.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6723.         WORD    ???
  6724.         DWORD    pointer to ???
  6725. Return: ???
  6726.     STACK unchanged
  6727. --------b-60----DI0C05-----------------------
  6728. INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
  6729.     DI = 0C05h
  6730.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6731.         WORD    ???
  6732.         DWORD    pointer to ???
  6733. Return: ???
  6734.     STACK unchanged
  6735. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6736. --------b-60----DI0E00-----------------------
  6737. INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
  6738.     DI = 0E00h
  6739.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6740.         DWORD    pointer to ???
  6741. Return: ???
  6742.     STACK unchanged
  6743. SeeAlso: INT 60/DI=0E01h,INT 60/DI=0E02h
  6744.  
  6745. Values for error code:
  6746.  0000h    successful
  6747.  FFF1h    "E_BUSY"
  6748.  FFF2h    timeout
  6749.  FFF3h    framing error
  6750.  FFF4h    parity error
  6751.  FFF5h    overrun error
  6752.  FFF6h    "E_EMPTY"
  6753.  FFF7h    "E_CONECT"
  6754.  FFF8h    not open
  6755.  FFF9h    out of memory
  6756.  FFFAh    buffer overflow
  6757.  FFFBh    "E_NOFIT"
  6758.  FFFCh    unsupported
  6759.  FFFDh    "E_IVOPR"
  6760.  FFFEh    "E_IVCHN"
  6761.  FFFFh    "E_REOPEN"
  6762. --------b-60----DI0E01-----------------------
  6763. INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
  6764.     DI = 0E01h
  6765.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6766.         DWORD    pointer to WORD buffer for comm channel handle
  6767.         WORD    communications line number (01h-04h)
  6768. Return: ???
  6769.     STACK unchanged
  6770. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
  6771. --------b-60----DI0E02-----------------------
  6772. INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
  6773.     DI = 0E02h
  6774.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6775.         WORD    comm channel handle
  6776. Return: ???
  6777.     STACK unchanged
  6778. SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
  6779. --------b-60----DI0E03-----------------------
  6780. INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
  6781.     DI = 0E03h
  6782.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6783.         WORD    ???
  6784. Return: ???
  6785.     STACK unchanged
  6786. --------b-60----DI0E04-----------------------
  6787. INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
  6788.     DI = 0E04h
  6789.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6790.         WORD    ???
  6791.         WORD    ???
  6792. Return: ???
  6793.     STACK unchanged
  6794. --------b-60----DI0E05-----------------------
  6795. INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
  6796.     DI = 0E05h
  6797.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6798.         WORD    ???
  6799.         DWORD    pointer to ???
  6800. Return: ???
  6801.     STACK unchanged
  6802. --------b-60----DI0E06-----------------------
  6803. INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
  6804.     DI = 0E06h
  6805.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6806.         WORD    comm channel handle
  6807.         WORD    reset options (see below)
  6808. Return: ???
  6809.     STACK unchanged
  6810.  
  6811. Bitfields for reset options:
  6812. Bit(s)    Description
  6813.  0    reset line
  6814.  1    flush transmit buffer
  6815.  2    flush receive buffer
  6816.  3    reset modem
  6817.  4    reset receiver's ^S state
  6818.  5    reset transmitter's ^S state
  6819. --------b-60----DI0E07-----------------------
  6820. INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
  6821.     DI = 0E07h
  6822.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6823.         WORD    ???
  6824. Return: ???
  6825.     STACK unchanged
  6826. --------b-60----DI0E08-----------------------
  6827. INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
  6828.     DI = 0E08h
  6829.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6830.         WORD    comm channel handle
  6831.         DWORD    pointer to data to be sent
  6832.         WORD    option flags
  6833.             bit 0: send partial buffer
  6834.             bit 1: turn on receiver after sending
  6835.         DWORD    pointer to WORD containing length of data to be sent
  6836. Return: length WORD updated to contain number of bytes actually sent???
  6837.     STACK unchanged
  6838. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6839. --------b-60----DI0E09-----------------------
  6840. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
  6841.     DI = 0E09h
  6842.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6843.         WORD    ???
  6844.         DWORD    pointer to ??? WORD
  6845.         DWORD    pointer to ??? WORD
  6846. Return: ???
  6847.     STACK unchanged
  6848. SeeAlso: INT 60/DI=0E0Ah
  6849. --------b-60----DI0E0A-----------------------
  6850. INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
  6851.     DI = 0E0Ah
  6852.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6853.         WORD    comm channel handle
  6854.         DWORD    pointer to WORD to get receive buffer size
  6855.         DWORD    pointer to WORD to get free bytes in receive buffer
  6856. Return: ???
  6857.     STACK unchanged
  6858. SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
  6859. --------b-60----DI0E0B-----------------------
  6860. INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
  6861.     DI = 0E0Bh
  6862.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6863.         WORD    comm channel handle
  6864.         DWORD    pointer to data buffer
  6865.         DWORD    pointer to WORD (input) length of data buffer
  6866.                     (output) number of bytes received
  6867. Return: ???
  6868.     STACK unchanged
  6869. SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
  6870. --------b-60----DI0E0C-----------------------
  6871. INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
  6872.     DI = 0E0Ch
  6873.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6874.         WORD    ???
  6875.         DWORD    pointer to ???
  6876.         WORD    ???
  6877. Return: ???
  6878.     STACK unchanged
  6879. --------b-60----DI0E0D-----------------------
  6880. INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
  6881.     DI = 0E0Dh
  6882.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6883.         WORD    ???
  6884.         DWORD    pointer to ???
  6885.         WORD    ???
  6886. Return: ???
  6887.     STACK unchanged
  6888. --------b-60----DI0E0E-----------------------
  6889. INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
  6890.     DI = 0E0Eh
  6891.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6892.         WORD    ???
  6893.         WORD    ???
  6894. Return: ???
  6895.     STACK unchanged
  6896. --------b-60----DI0E0F-----------------------
  6897. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
  6898.     DI = 0E0Fh
  6899.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6900.         WORD    ???
  6901. Return: ???
  6902.     STACK unchanged
  6903. --------b-60----DI0E10-----------------------
  6904. INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
  6905.     DI = 0E10h
  6906.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6907.         WORD    ???
  6908. Return: ???
  6909.     STACK unchanged
  6910. --------b-60----DI0E11-----------------------
  6911. INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
  6912.     DI = 0E11h
  6913.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6914.         WORD    ???
  6915.         WORD    ???
  6916. Return: ???
  6917.     STACK unchanged
  6918. --------b-60----DI0E12-----------------------
  6919. INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
  6920.     DI = 0E12h
  6921.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6922.         WORD    ???
  6923. Return: ???
  6924.     STACK unchanged
  6925. --------b-60----DI0E13-----------------------
  6926. INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
  6927.     DI = 0E13h
  6928.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6929.         WORD    ???
  6930. Return: ???
  6931.     STACK unchanged
  6932. --------b-60----DI0E14-----------------------
  6933. INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
  6934.     DI = 0E14h
  6935.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6936.         WORD    comm channel handle
  6937.         DWORD    pointer to comm settings (see below)
  6938. Return: ???
  6939.     STACK unchanged
  6940. SeeAlso: INT 60/DI=0E15h
  6941.  
  6942. Format of comm settings:
  6943. Offset    Size    Description
  6944.  00h    BYTE    dial type ('T' tone, 'P' pulse)
  6945.  01h    WORD    baud rate divisor (115200/baud_rate)
  6946.  03h    BYTE    parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
  6947.  04h    BYTE    stop bits (00h one, 04h two)
  6948.  05h    BYTE    data bits - 5
  6949.  06h    BYTE    software handshake
  6950.         01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
  6951.  07h    BYTE    infrared (01h off, 02h on)
  6952.  08h    BYTE    duplex (01h half, 02h full)
  6953.  09h    BYTE    echo (01h echo, 02h no echo)
  6954. --------b-60----DI0E15-----------------------
  6955. INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
  6956.     DI = 0E15h
  6957.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6958.         WORD    ???
  6959.         DWORD    pointer to buffer for settings (see INT 60/DI=0E14h)
  6960. Return: ???
  6961.     STACK unchanged
  6962. SeeAlso: INT 60/DI=0E14h
  6963. --------b-60----DI0E16-----------------------
  6964. INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
  6965.     DI = 0E16h
  6966.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6967.         WORD    ???
  6968.         WORD    ???
  6969.         WORD    ???
  6970.         WORD    ???
  6971.         WORD    ???
  6972. Return: ???
  6973.     STACK unchanged
  6974. --------b-60----DI0E17-----------------------
  6975. INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
  6976.     DI = 0E17h
  6977.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6978.         WORD    ???
  6979. Return: ???
  6980.     STACK unchanged
  6981. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  6982. --------b-60----DI0F00-----------------------
  6983. INT 60 u - HP 95LX System Manager - "M_ERRMSG"
  6984.     DI = 0F00h
  6985.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6986.         WORD    ???
  6987.         DWORD    pointer to ???
  6988.         WORD    ???
  6989.         DWORD    pointer to ???
  6990. Return: ???
  6991.     STACK unchanged
  6992. --------b-60----DI0F01-----------------------
  6993. INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
  6994.     DI = 0F01h
  6995.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  6996.         DWORD    pointer to ASCIZ title string
  6997. Return: ???
  6998.     STACK unchanged
  6999. --------b-60----DI0F02-----------------------
  7000. INT 60 u - HP 95LX System Manager - "SHOWNAME"
  7001.     DI = 0F02h
  7002.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7003.         DWORD    pointer to ???
  7004. Return: ???
  7005.     STACK unchanged
  7006. --------b-60----DI0F03-----------------------
  7007. INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
  7008.     DI = 0F03h
  7009.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7010.         DWORD    pointer to first line of message
  7011.         WORD    length of first line
  7012.         DWORD    pointer to second line of message
  7013.         WORD    length of second line
  7014. Return: ???
  7015.     STACK unchanged
  7016. SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
  7017. --------b-60----DI0F04-----------------------
  7018. INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
  7019.     DI = 0F04h
  7020.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7021. Return: ???
  7022.     STACK unchanged
  7023. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
  7024. --------b-60----DI0F05-----------------------
  7025. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
  7026.     DI = 0F05h
  7027.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7028. Return: DX:AX -> ???
  7029.     STACK unchanged
  7030. --------b-60----DI0F06-----------------------
  7031. INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
  7032.     DI = 0F06h
  7033.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7034. Return: DX:AX -> ???
  7035.     STACK unchanged
  7036. --------b-60----DI0F07-----------------------
  7037. INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
  7038.     DI = 0F07h
  7039.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7040. Return: DX:AX -> ???
  7041.     STACK unchanged
  7042. --------b-60----DI0F08-----------------------
  7043. INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
  7044.     DI = 0F08h
  7045.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7046.         ???
  7047. Return: ???
  7048.     STACK unchanged
  7049. --------b-60----DI0F09-----------------------
  7050. INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
  7051.     DI = 0F09h
  7052.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7053.         DWORD    pointer to first line of message
  7054.         WORD    length of first line
  7055.         DWORD    pointer to second line of message
  7056.         WORD    length of second line
  7057.         DWORD    pointer to third line of message
  7058.         WORD    length of third line
  7059. Return: ???
  7060.     STACK unchanged
  7061. SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
  7062. --------b-60----DI0F0A-----------------------
  7063. INT 60 u - HP 95LX System Manager - DISABLE MACROS
  7064.     DI = 0F0Ah
  7065.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7066. Return: ???
  7067.     STACK unchanged
  7068. SeeAlso: INT 60/DI=0F0Bh
  7069. --------b-60----DI0F0B-----------------------
  7070. INT 60 u - HP 95LX System Manager - ENABLE MACROS
  7071.     DI = 0F0Bh
  7072.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7073. Return: ???
  7074.     STACK unchanged
  7075. SeeAlso: INT 60/DI=0F0Ah
  7076. --------b-60----DI0F0C-----------------------
  7077. INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
  7078.     DI = 0F0Ch
  7079.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7080.         ???
  7081. Return: ???
  7082.     STACK unchanged
  7083. --------b-60----DI0F0D-----------------------
  7084. INT 60 u - HP 95LX System Manager - "M_FORM_FT"
  7085.     DI = 0F0Dh
  7086.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7087.         DWORD    pointer to ???
  7088. Return: DX:AX -> ???
  7089.     STACK unchanged
  7090. --------b-60----DI0F0E-----------------------
  7091. INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
  7092.     DI = 0F0Eh
  7093.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7094.         DWORD    pointer to ???
  7095. Return: DX:AX -> ???
  7096.     STACK unchanged
  7097. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7098. --------b-60----DI1005-----------------------
  7099. INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
  7100.     DI = 1005h
  7101.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7102. Return: ???
  7103.     STACK unchanged
  7104. SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
  7105. --------b-60----DI1200-----------------------
  7106. INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
  7107.     DI = 1200h
  7108.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7109.         DWORD    pointer to ???
  7110. Return: ???
  7111.     STACK unchanged
  7112. --------b-60----DI1201-----------------------
  7113. INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
  7114.     DI = 1201h
  7115.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7116.         WORD    ???
  7117. Return: DX:AX -> ???
  7118.     STACK unchanged
  7119. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7120. --------b-60----DI1202-----------------------
  7121. INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
  7122.     DI = 1202h
  7123.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7124. Return: DX:AX -> ???
  7125.     STACK unchanged
  7126. --------b-60----DI1203-----------------------
  7127. INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
  7128.     DI = 1203h
  7129.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7130. Return: ???
  7131.     STACK unchanged
  7132. --------b-60----DI1300-----------------------
  7133. INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
  7134.     DI = 1300h
  7135.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7136.         DWORD    pointer to ???
  7137.         DWORD    pointer to ???
  7138.         WORD    ???
  7139. Return: ???
  7140.     STACK unchanged
  7141. --------b-60----DI1301-----------------------
  7142. INT 60 u - HP 95LX System Manager - DISPLAY HELP
  7143.     DI = 1301h
  7144.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7145.         DWORD    pointer to ???
  7146. Return: ???
  7147.     STACK unchanged
  7148. --------b-60----DI1302-----------------------
  7149. INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
  7150.     DI = 1302h
  7151.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7152.         DWORD    pointer to ???
  7153.         WORD    ???
  7154. Return: ???
  7155.     STACK unchanged
  7156. --------b-60----DI1303-----------------------
  7157. INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
  7158.     DI = 1303h
  7159.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7160.         DWORD    pointer to ???
  7161. Return: ???
  7162.     STACK unchanged
  7163. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7164. --------b-60----DI1400-----------------------
  7165. INT 60 u - HP 95LX System Manager - "M_ColInit"
  7166.     DI = 1400h
  7167.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7168. Return: AX = ???
  7169.     STACK unchanged
  7170. --------b-60----DI1401-----------------------
  7171. INT 60 u - HP 95LX System Manager - "M_ColCpStr"
  7172.     DI = 1401h
  7173.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7174.         DWORD    pointer to ???
  7175.         WORD    ???
  7176.         DWORD    pointer to ???
  7177.         WORD    ???
  7178. Return: ???
  7179.     STACK unchanged
  7180. --------b-60----DI1402-----------------------
  7181. INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
  7182.     DI = 1402h
  7183.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7184.         ???
  7185. Return: ???
  7186.     STACK unchanged
  7187. --------b-60----DI1403-----------------------
  7188. INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
  7189.     DI = 1403h
  7190.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7191.         ???
  7192. Return: ???
  7193.     STACK unchanged
  7194. --------b-60----DI1404-----------------------
  7195. INT 60 u - HP 95LX System Manager - "M_ColToLower"
  7196.     DI = 1404h
  7197.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7198.         DWORD    pointer to ???
  7199.         WORD    ???
  7200. Return: ???
  7201.     STACK unchanged
  7202. --------b-60----DI1405-----------------------
  7203. INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
  7204.     DI = 1405h
  7205.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7206.         DWORD    pointer to ???
  7207.         WORD    ???
  7208.         DWORD    pointer to ???
  7209.         WORD    ???
  7210.         WORD    ???
  7211. Return: ???
  7212.     STACK unchanged
  7213. --------b-60----DI1406-----------------------
  7214. INT 60 u - HP 95LX System Manager - "M_ColToUpper"
  7215.     DI = 1406h
  7216.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7217.         DWORD    pointer to ???
  7218.         WORD    ???
  7219. Return: ???
  7220.     STACK unchanged
  7221. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7222. --------b-60----DI1500-----------------------
  7223. INT 60 u - HP 95LX System Manager - "GrDispInit"
  7224.     DI = 1500h
  7225.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7226.         ???
  7227. Return: ???
  7228.     STACK unchanged
  7229. --------b-60----DI1501-----------------------
  7230. INT 60 u - HP 95LX System Manager - "GrDispClear"
  7231.     DI = 1501h
  7232.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7233.         ???
  7234. Return: ???
  7235.     STACK unchanged
  7236. --------b-60----DI1502-----------------------
  7237. INT 60 u - HP 95LX System Manager - "GrDispDot"
  7238.     DI = 1502h
  7239.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7240.         ???
  7241. Return: ???
  7242.     STACK unchanged
  7243. --------b-60----DI1503-----------------------
  7244. INT 60 u - HP 95LX System Manager - "GrDispDraw"
  7245.     DI = 1503h
  7246.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7247.         ???
  7248. Return: ???
  7249.     STACK unchanged
  7250. --------b-60----DI1504-----------------------
  7251. INT 60 u - HP 95LX System Manager - "GrDispFill"
  7252.     DI = 1504h
  7253.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7254.         ???
  7255. Return: ???
  7256.     STACK unchanged
  7257. --------b-60----DI1505-----------------------
  7258. INT 60 u - HP 95LX System Manager - "GrDispRead"
  7259.     DI = 1505h
  7260.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7261.         ???
  7262. Return: ???
  7263.     STACK unchanged
  7264. --------b-60----DI1506-----------------------
  7265. INT 60 u - HP 95LX System Manager - "GrDispString"
  7266.     DI = 1506h
  7267.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7268.         ???
  7269. Return: ???
  7270.     STACK unchanged
  7271. --------b-60----DI1507-----------------------
  7272. INT 60 u - HP 95LX System Manager - "GrDispPan"
  7273.     DI = 1507h
  7274.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7275.         ???
  7276. Return: ???
  7277.     STACK unchanged
  7278. --------b-60----DI1508-----------------------
  7279. INT 60 u - HP 95LX System Manager - "GrDispZoom"
  7280.     DI = 1508h
  7281.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7282.         ???
  7283. Return: ???
  7284.     STACK unchanged
  7285. --------b-60----DI1509-----------------------
  7286. INT 60 u - HP 95LX System Manager - "GrDispSave"
  7287.     DI = 1509h
  7288.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7289.         ???
  7290. Return: ???
  7291.     STACK unchanged
  7292. --------b-60----DI150A-----------------------
  7293. INT 60 u - HP 95LX System Manager - "GrDispRestore"
  7294.     DI = 150Ah
  7295.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7296.         ???
  7297. Return: ???
  7298.     STACK unchanged
  7299. --------b-60----DI150B-----------------------
  7300. INT 60 u - HP 95LX System Manager - "GrDispCorner"
  7301.     DI = 150Bh
  7302.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7303.         ???
  7304. Return: ???
  7305.     STACK unchanged
  7306. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7307. --------b-60----DI1604-----------------------
  7308. INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
  7309.     DI = 1604h
  7310.     STACK:    2 WORDs unused dummies (for calls from high level languages)
  7311.         ???
  7312. Return: ???
  7313.     STACK unchanged
  7314. SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
  7315. --------G-6000-------------------------------
  7316. INT 60 - SYS_PROF.EXE - PROFILER STATUS
  7317.     AH = 00h
  7318. Return: AX = 0000h    profiling is off
  7319.         otherwise profiling is on
  7320. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7321.       Issue 47
  7322. SeeAlso: AH=01h"SYS_PROF",02h"SYS_PROF"
  7323. --------G-6000-------------------------------
  7324. INT 60 - MDEBUG - GET STATUS
  7325.     AH = 00h
  7326.     DS:SI -> password or a null byte
  7327. Return: AX = return code
  7328.         FFFEh password is invalid
  7329.         FFFDh display mode is invalid
  7330.        else successful
  7331.         ES = value of the monitor register SE
  7332.         DI = value of the monitor register OF
  7333.         CH = monitor color
  7334.         CL = interpreter color
  7335.         BH = monitor start line
  7336.         BL = interpreter start line
  7337.         AH = makecode of the hotkey
  7338.         AL = ASCII code of the hotkey
  7339.         DL = status of special keys (only SHIFT, ALT, CTRL) for the
  7340.             hotkey (coded as for the keyboard flag at 0040h:0017h)
  7341.         DH = basic process number for the communication with drivers
  7342.             process number for the display driver, DH+1 = process
  7343.             number for the command driver(s)
  7344.     DS:SI -> MDEBUG identification table
  7345. Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
  7346.       Schemmer, including a memory monitor, an interpreter, and a
  7347.       disassembler
  7348. Notes:    MDEBUG uses INT 60 by default, but may be directed to any of INT 60
  7349.       through INT 67; the interrupt handler is preceded by the signature
  7350.       "USERINT" and is not chained
  7351.     if DS:SI points at a null byte, MDEBUG will prompt for a password if
  7352.       passwords are active; enough stack space must be provided for an
  7353.       INT 10h call (which MDEBUG uses while prompting for the password)
  7354. SeeAlso: AH=02h"MDEBUG"
  7355. Index:    hotkeys;MDEBUG
  7356.  
  7357. Format of MDEBUG identification table:
  7358. Offset    Size    Description
  7359.  -2    WORD    entry offset
  7360.  00h    WORD    CS of MDEBUG
  7361.  02h    DWORD    old INT 08h vector
  7362.  06h    DWORD    old INT 09h vector
  7363.  0Ah    DWORD    address INT 16h routine used by MDEBUG
  7364.  0Eh    BYTE    length of version string
  7365.  0Fh  N BYTEs    version string
  7366. --------G-6001-------------------------------
  7367. INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
  7368.     AH = 01h
  7369.     DS:SI -> password or a null byte
  7370. Return: AX = return code
  7371.         FFFEh password is invalid
  7372.         FFFDh display mode is invalid
  7373.        else successful
  7374.         ES:DI point to the help registers of MDEBUG
  7375.            ES:DI-02h  -> R0 (WORD)
  7376.            ES:DI      -> R1 (WORD)
  7377.            ES:DI+02h  -> R2 (WORD)
  7378.            ES:DI+04h  -> R3 (WORD)
  7379.            ...
  7380.            ES:DI+0Eh  -> R8 (WORD)
  7381. --------G-6001-------------------------------
  7382. INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
  7383.     AH = 01h
  7384. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7385.       Issue 47
  7386. SeeAlso: AH=00h"SYS_PROF",02h"SYS_PROF"
  7387. --------N-6001FF-----------------------------
  7388. INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
  7389.     AX = 01FFh
  7390.     BX = handle returned by function 02h
  7391. Return: CF set on error
  7392.         DH = error code (see below)
  7393.     CF clear if successful
  7394.         BX = version
  7395.         CH = network interface class (see below)
  7396.         DX = interface type (see below)
  7397.         CL = number
  7398.         DS:SI -> name
  7399.         AL = driver functions supported
  7400.         01h basic
  7401.         02h basic and extended
  7402.         05h basic and high-performance
  7403.         06h basic, high-performance, and extended
  7404.         FFh not installed
  7405. Note:    the handle in BX is optional for drivers written to v1.07 or later of
  7406.       the packet driver specification
  7407.  
  7408. Values for error code:
  7409.  01h "BAD_HANDLE"    invalid handle number
  7410.  02h "NO_CLASS"        no interfaces of the specified class found
  7411.  03h "NO_TYPE"        no interfaces of the specified type found
  7412.  04h "NO_NUMBER"    no interfaces of the specified number found
  7413.  05h "BAD_TYPE"        bad packet type
  7414.  06h "NO_MULTICAST"    interface does not support multicast messages
  7415.  07h "CANT_TERMINATE"    this packet driver cannot terminate
  7416.  08h "BAD_MODE"        invalid receiver mode
  7417.  09h "NO_SPACE"        insufficient space
  7418.  0Ah "TYPE_INUSE"    type accessed but never released
  7419.  0Bh "BAD_COMMAND"    bad command
  7420.  0Ch "CANT_SEND"    packet could not be sent
  7421.  0Dh "CANT_SET"        hardware address could not be changed
  7422.  0Eh "BAD_ADDRESS"    hardware address has a bad length or format
  7423.  0Fh "CANT_RESET"    could not reset interface
  7424.  
  7425. Values for Network Interface classes/types:
  7426.     Class 01h  Ethernet/IEEE 802.3
  7427.     01h 3COM 3C500/3C501
  7428.     02h 3COM 3C505
  7429.     03h MICOM-Interlan NI5010
  7430.     04h BICC Data Networks 4110
  7431.     05h BICC Data Networks 4117
  7432.     06h MICOM-Interlan NP600
  7433.     08h Ungermann-Bass PC-NIC
  7434.     09h Univation NC-516
  7435.     0Ah TRW PC-2000
  7436.     0Bh MICOM-Interlan NI5210
  7437.     0Ch 3COM 3C503
  7438.     0Dh 3COM 3C523
  7439.     0Eh Western Digital WD8003
  7440.     0Fh Spider Systems S4
  7441.     10h Torus Frame Level
  7442.     11h 10Net Communications
  7443.     12h Gateway PC-bus
  7444.     13h Gateway AT-bus
  7445.     14h Gateway MCA-bus
  7446.     15h IMC PCnic
  7447.     16h IMC PCnic II
  7448.     17h IMC PCnic 8-bit
  7449.     18h Tigan Communications
  7450.     19h Micromatic Research
  7451.     1Ah Clarkson "Multiplexor"
  7452.     1Bh D-Link 8-bit
  7453.     1Ch D-Link 16-bit
  7454.     1Dh D-Link PS/2
  7455.     1Eh Research Machines 8
  7456.     1Fh Research Machines 16
  7457.     20h Research Machines MCA
  7458.     21h Radix Microsystems EXM1 16-bit
  7459.     22h Interlan Ni9210
  7460.     23h Interlan Ni6510
  7461.     24h Vestra LANMASTER 16-bit
  7462.     25h Vestra LANMASTER 8-bit
  7463.     26h Allied Telesis PC/XT/AT
  7464.     27h Allied Telesis NEC PC-98
  7465.     28h Allied Telesis Fujitsu FMR
  7466.     29h Ungermann-Bass NIC/PS2
  7467.     2Ah Tiara LANCard/E AT
  7468.     2Bh Tiara LANCard/E MC
  7469.     2Ch Tiara LANCard/E TP
  7470.     2Dh Spider Communications SpiderComm 8
  7471.     2Eh Spider Communications SpiderComm 16
  7472.     2Fh AT&T Starlan NAU
  7473.     30h AT&T Starlan-10 NAU
  7474.     31h AT&T Ethernet NAU
  7475.     32h Intel smart card
  7476.     33h Xircom Packet Adapter
  7477.     34h Aquila Ethernet
  7478.     35h Novell NE1000
  7479.     36h Novell NE2000
  7480.     37h SMC PC-510
  7481.     38h AT&T Fiber NAU
  7482.     39h NDIS to Packet Driver adapter
  7483.     3Ah Racal-InterLan ES3210
  7484.     3Bh General Systems ISDN simulated Ethernet
  7485.     3Ch Hewlett-Packard
  7486.     3Dh IMC EtherNic-8
  7487.     3Eh IMC EtherNic-16
  7488.     3Fh IMC EtherNic-MCA
  7489.     40h NetWorth EtherNext
  7490.     41h Dataco Scanet
  7491.     42h DEC DEPCA
  7492.     43h C-Net
  7493.     44h Gandalf LANLine
  7494.     45h Apricot built-in
  7495.     46h David Systems Ether-T
  7496.     47h ODI to Packet Driver adapter
  7497.     48h AMD Am21110-16
  7498.     49h Intel ICD Network controller family
  7499.     4Ah Intel ICD PCL2
  7500.     4Bh Intel ICD PCL2A
  7501.     4Ch AT&T LANPacer
  7502.     4Dh AT&T LANPacer+
  7503.     4Eh AT&T EVB
  7504.     4Fh AT&T StarStation
  7505.     50h SLIP simulated ethernet
  7506.     51h Racal-Interlan NIA310
  7507.     52h Racal-Interlan NISE
  7508.     53h Racal-Interlan NISE30
  7509.     54h Racal-Interlan NI6610
  7510.     55h Ethernet over IP/UDP
  7511.     56h ICL EtherTeam 16
  7512.     57h David Systems
  7513.     58h NCR WaveLAN
  7514.     59h Thomas Contrad TC5045
  7515.     5Ah Russ Nelson's Parallel Port driver
  7516.     5Bh Intell EtherExpress 16
  7517.     5Ch IBMTOKEN
  7518.     5Dh Zenith Z-Note
  7519.     5Eh 3Com 3C509
  7520.     5Fh Mylex LNE390
  7521.     60h Madge Smart Ringnode
  7522.     61h Novell NE2100
  7523.     62h Allied Telesis 1500
  7524.     63h Allied Telesis 1700
  7525.     64h Fujitsu EtherCoupler
  7526.     Class 02h  ProNET-10
  7527.     01h Proteon p1300
  7528.     02h Proteon p1800
  7529.     Class 03h  IEEE 802.5/ProNet-4 (without expanded RIFs)
  7530.     01h IBM Token-Ring Adapter
  7531.     02h Proteon p1340
  7532.     03h Proteon p1344
  7533.     04h Gateway PC-bus
  7534.     05h Gateway AT-bus
  7535.     06h Gateway MCA-bus
  7536.     07h Madge board
  7537.     39h NDIS to Packet Driver adapter
  7538.     47h ODI to Packet Driver adapter
  7539.     Class 04h  Omninet
  7540.     Class 05h  Appletalk
  7541.     01h ATALK.SYS adapter
  7542.     Class 06h  Serial Line
  7543.     01h Clarkson 8250-SLIP
  7544.     02h Clarkson "Multiplexor"
  7545.     03h Eicon Technologies
  7546.     Class 07h  StarLAN (subsumed by Ethernet class)
  7547.     Class 08h  ARCnet
  7548.     01h Datapoint RIM
  7549.     Class 09h  AX.25
  7550.     01h Ottawa PI card
  7551.     02h Eicon Technologies
  7552.     Class 0Ah  KISS
  7553.     Class 0Bh  IEEE 802.3 with 802.2 headers
  7554.     types same as for class 01h
  7555.     Class 0Ch  FDDI with 802.2 headers
  7556.     01h Western Digital
  7557.     02h Frontier Technology
  7558.     Class 0Dh  Internet X.25
  7559.     01h Western Digital
  7560.     02h Frontier Technology
  7561.     03h Emerging Technologies
  7562.     04h The Software Forge
  7563.     05h Link Data Intelligent X.25
  7564.     06h Eicon Technologies
  7565.     Class 0Eh  N.T. LANSTAR (encapsulating DIX Ethernet)
  7566.     01h NT LANSTAR/8
  7567.     02h NT LANSTAR/MC
  7568.     Class 0Fh  SLFP (MIT serial specification)
  7569.     01h MERIT
  7570.     Class 10h  PPP (Point-to-Point Protocol)
  7571.     01h 8250/16550 UART
  7572.     02h Niwot Networks synch
  7573.     03h Eicon Technologies
  7574.     Class 11h  802.5 with expanded RIFs
  7575.     types same as for class 3
  7576.     Class 12h  reserved for LCP/NCPs
  7577. Note: class and type numbers are cleared through FTP Software
  7578. --------G-6002-------------------------------
  7579. INT 60 - MDEBUG - SET STATUS
  7580.     AH = 02h
  7581.     DS:SI -> password or a null byte
  7582.     ES = new value for the register SE
  7583.     DI = new value for the register OF
  7584.     CH = new monitor color if nonzero
  7585.     CL = new interpreter color if nonzero
  7586.     BH = new monitor start line if nonzero
  7587.     BL = new interpreter start line if nonzero
  7588.     AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
  7589.     DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
  7590.         if nonzero
  7591.     DH = if nonzero, new basic process number for communication with the
  7592.         drivers (DH = multiplex number for the display driver,
  7593.         DH+1 = multiplex number for the command driver or drivers)
  7594. Return: AX = return code
  7595.         FFFFh call not allowed
  7596.         FFFEh password is invalid
  7597.         FFFDh display mode is invalid
  7598.         0000h successful, status changed
  7599.        else AL = error reasons (see below)
  7600. Note:    the values of the registers SE and OF are always changed, the other
  7601.       values are only changed if they are valid
  7602. SeeAlso: AH=00h"MDEBUG"
  7603. Index:    hotkeys;MDEBUG
  7604.  
  7605. Bitfields for error reasons:
  7606. Bit(s)    Description
  7607.  0    invalid monitor start line
  7608.  1    invalid interpreter start line
  7609.  2    invalid hotkey
  7610.  3    invalid process number
  7611.  4-7    reserved
  7612. --------N-6002-------------------------------
  7613. INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
  7614.     AH = 02h
  7615.     AL = interface class
  7616.     BX = interface type
  7617.     DL = interface number
  7618.     DS:SI -> type
  7619.     CX = length of type (0000h for all packets)
  7620.     ES:DI -> receiver
  7621. Return: CF set on error
  7622.         DH = error code (see AX=01FFh)
  7623.     CF clear if successful
  7624.         AX = handle
  7625. SeeAlso: AH=03h"FTP"
  7626.  
  7627. Receiver is called with:
  7628.     AX = subfunction
  7629.         00h get packet buffer
  7630.         DX = lookahead length (v1.10+)
  7631.         DS:SI -> lookahead buffer if DX nonzero (v1.10+)
  7632.         DI = error flags (class dependent) (v1.10+)
  7633.         Return: ES:DI -> packet buffer
  7634.                 0000h:0000h means throw away packet
  7635.             CX = size of buffer (v1.10+), may be smaller than
  7636.                 incoming data
  7637.         01h copy completed
  7638.         DS:SI -> buffer
  7639.         CX = bytes actually copied (v1.10+)
  7640.     BX = handle
  7641.     CX = buffer length
  7642. when a packet is received
  7643. --------G-6002-------------------------------
  7644. INT 60 - SYS_PROF.EXE - TURN PROFILING ON
  7645.     AH = 02h
  7646. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7647.       Issue 47
  7648. SeeAlso: AH=00h"SYS_PROF",01h"SYS_PROF"
  7649. --------G-6003-------------------------------
  7650. INT 60 - MDEBUG - POP UP
  7651.     AH = 03h
  7652.     DS:SI -> password or a null byte
  7653.     ES -> new value for the register SE
  7654.     DI -> new value for the register OF
  7655. Return: AX = return code
  7656.         FFFFh call not allowed
  7657.         FFFEh password is invalid
  7658.         FFFDh display mode is invalid
  7659.        else successful
  7660. SeeAlso: AH=04h"MDEBUG"
  7661. --------N-6003-------------------------------
  7662. INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
  7663.     AH = 03h
  7664.     BX = handle
  7665. Return: CF set on error
  7666.        DH = error code (see AX=01FFh)
  7667.     CF clear if successful
  7668. SeeAlso: AH=02h"FTP"
  7669. --------G-6003-------------------------------
  7670. INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
  7671.     AH = 03h
  7672. Return: ES:BX -> profiling table
  7673. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7674.       Issue 47
  7675. SeeAlso: AH=04h"SYS_PROF"
  7676. --------N-6004-------------------------------
  7677. INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
  7678.     AH = 04h
  7679.     DS:SI -> buffer
  7680.     CX = length
  7681. Return: CF set on error
  7682.         DH = error code (see AX=01FFh)
  7683.     CF clear if successful
  7684. Note:    the buffer may be modified immediately upon return from this call
  7685. SeeAlso: AH=0Bh
  7686. --------G-6004-------------------------------
  7687. INT 60 - MDEBUG - POP UP
  7688.     AH = 04h
  7689.     DS:SI -> password or a null byte
  7690. Return: AX = return code
  7691.         FFFFh call not allowed
  7692.         FFFEh password is invalid
  7693.         FFFDh display mode is invalid
  7694.        else successful
  7695. SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
  7696. --------G-6004-------------------------------
  7697. INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
  7698.     AH = 04h
  7699. Note:    SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
  7700.       Issue 47
  7701. SeeAlso: AH=03h"SYS_PROF"
  7702. --------N-6005-------------------------------
  7703. INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
  7704.     AH = 05h
  7705.     BX = handle (optional for v1.10+)
  7706. Return: CF set on error
  7707.        DH = error code (see AX=01FFh)
  7708.     CF clear if successful
  7709. --------G-6005-------------------------------
  7710. INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
  7711.     AH = 05h
  7712.     DS:SI -> password or a null byte
  7713.     BL = new value for the semaphor of MDEBUG
  7714.          00h  enable popup of MDEBUG
  7715.          else disable popup of MDEBUG
  7716. Return: AX = return code
  7717.         FFFEh password is invalid
  7718.         FFFDh display mode is invalid
  7719.        else successful
  7720.         BL = old value of the semaphor of MDEBUG
  7721.         BH = old value of the INT 08h semaphor
  7722.             (this semaphor is always reset after this function)
  7723. --------N-6006-------------------------------
  7724. INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
  7725.     AH = 06h
  7726.     BX = handle (optional for v1.10+)
  7727.     ES:DI -> buffer
  7728.     CX = length
  7729. Return: CF set on error
  7730.         DH = error code (see AX=01FFh)
  7731.     CF clear if successful
  7732.         CX = length
  7733. Note:    copies the local net address associated with the handle into the buffer
  7734. --------G-6006-------------------------------
  7735. INT 60 - MDEBUG - GET PASSWORD STATUS
  7736.     AH = 06h
  7737. Return: AL = status
  7738.         00h password inactive
  7739.         01h password active
  7740. --------N-6007-------------------------------
  7741. INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
  7742.     AH = 07h
  7743.     BX = handle (optional for v1.10+)
  7744. Return: CF set on error
  7745.         DH = error code (see AX=01FFh)
  7746.     CF clear if successful
  7747. --------G-6007-------------------------------
  7748. INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
  7749.     AH = 07h
  7750. Return: AL = active part for the next popup session of MDEBUG:
  7751.         bit 0: the next popup session will start in the interpreter rather
  7752.             than in the monitor
  7753.         bit 1: the next popup session will sart in the online-help
  7754. SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
  7755. --------G-6008-------------------------------
  7756. INT 60 - MDEBUG - UNUSED
  7757.     AH = 08h-FFh
  7758. Return: AX = FFFCh
  7759. --------N-600A-------------------------------
  7760. INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
  7761.     AH = 0Ah
  7762. Return: CF set on error
  7763.         DH = error code (0Bh) (see AX=01FFh)
  7764.     CF clear if successful
  7765.         ES:DI -> parameter table (see below)
  7766.  
  7767. Format of parameter table:
  7768. Offset    Size    Description
  7769.  00h    BYTE    major revision of packet driver spec driver conforms to
  7770.  01h    BYTE    minor revision of packet driver spec
  7771.  02h    BYTE    length of this structure in bytes
  7772.  03h    BYTE    length of a MAC-layer address
  7773.  04h    WORD    maximum transfer unit, including MAC headers
  7774.  06h    WORD    buffer size for multicast addr
  7775.  08h    WORD    number of receive buffers (one less than back-to-back MTU rcvs)
  7776.  0Ah    WORD    number of transmit buffers
  7777.  0Ch    WORD    interrupt number to hook for post-EOI processing, 00h=none
  7778. --------N-600B-------------------------------
  7779. INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7780.     AH = 0Bh
  7781.     DS:SI -> buffer
  7782.     CX = length of buffer
  7783.     ES:DI -> FAR function to call when buffer becomes available
  7784. Return: CF set on error
  7785.         DH = error code (0Bh,0Ch) (see AX=01FFh)
  7786.     CF clear if successful
  7787. Notes:    unlike function 04h, the buffer is not available for modification as
  7788.       soon as the call returns; the buffer may be queued by the driver and
  7789.       not processed until later
  7790.     this function has been dropped from v1.10+ of the specification and
  7791.       replaced by function 0Ch
  7792. SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
  7793.  
  7794. Completion function called with:
  7795.     AX = result
  7796.         00h copy OK
  7797.         nonzero error
  7798.     ES:DI -> buffer passed to INT 60/AH=0Bh call
  7799. --------N-600C-------------------------------
  7800. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
  7801.     AH = 0Ch
  7802.     ES:DI -> pointer to IOCB
  7803. Return: CF set on error
  7804.         DH = error code (see AX=01FFh)
  7805.     CF clear if successful
  7806. SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
  7807.  
  7808. Format of IOCB:
  7809. Offset    Size    Description
  7810.  00h    DWORD    pointer to buffer
  7811.  04h    WORD    length of buffer
  7812.  06h    BYTE    flags
  7813.         bit 0: packet driver is finished with IOCB
  7814.         bit 1: application requests upcall when driver completes
  7815.  07h    DWORD    function address for upcall
  7816.  0Bh  4 BYTEs    future gather write
  7817.  0Fh    BYTE    ???
  7818.  10h  8 BYTEs    private driver workspace
  7819.  
  7820. Completion function called with:
  7821.     ES:DI -> IOCB passed to INT 60/AH=0Ch
  7822. --------N-600C-------------------------------
  7823. INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
  7824.     AH = 0Ch
  7825. Return: AL = status
  7826.         00h successful
  7827.         ES:SI -> 6-byte station address
  7828.         02h semaphore service is unavailable
  7829. --------N-600D-------------------------------
  7830. INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
  7831.     AH = 0Dh
  7832.     ES:DI -> IOCB
  7833. Return: CF set on error
  7834.         DH = error code (see AX=01FFh)
  7835.     CF clear if successful
  7836. SeeAlso: AH=0Ch"Packet Driver"
  7837. --------N-6011-------------------------------
  7838. INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
  7839.     AH = 11h
  7840.     AL = drive number or 0
  7841.     DX = number of seconds to wait
  7842.     ES:SI = Ethernet address or 0
  7843.     DS:BX -> 31-byte ASCIZ semaphore name
  7844. Return: AL = status (see below)
  7845. SeeAlso: AH=12h,AH=13h
  7846.  
  7847. Values for status:
  7848.  00h    successful
  7849.  01h    timeout
  7850.  02h    server not responding
  7851.  03h    invalid semaphore name
  7852.  04h    semaphore list is full
  7853.  05h    invalid drive ID
  7854.  06h    invalid Ethernet address
  7855.  07h    not logged in
  7856.  08h    write to network failed
  7857.  09h    semaphore already logged for this CPU
  7858. --------N-6012-------------------------------
  7859. INT 60 - 3com, 10NET, Banyan VINES - LOCK
  7860.     AH = 12h
  7861.     AL = drive number or 00h
  7862.     ES:SI = Ethernet address or 0000h:0000h
  7863.     DS:BX -> 31-byte ASCIZ semaphore name
  7864. Return: AL = status (see also AH=11h)
  7865.         01h semaphore currently locked by another PC
  7866. Note:    unlike function 11h, this function returns immediately
  7867. SeeAlso: AH=11h,AH=13h
  7868. --------N-6013-------------------------------
  7869. INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
  7870.     AH = 13h
  7871.     AL = drive number or 00h
  7872.     ES:SI = Ethernet address or 0000h:0000h
  7873.     DS:BX -> 31-byte ASCIZ semaphore name
  7874. Return: AL = status (see also AH=11h)
  7875.         01h semaphore not locked
  7876. SeeAlso: AH=11h,AH=12h
  7877. --------N-6014-------------------------------
  7878. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
  7879.     AH = 14h
  7880.     BX = handle (optional for v1.10+)
  7881.     CX = mode
  7882.         01h turn off receiver
  7883.         02h receive only packets sent to this interface
  7884.         03h mode 2 plus broadcast packets
  7885.         04h mode 3 plus limited multicast packets
  7886.         05h mode 3 plus all multicast packets
  7887.         06h all packets
  7888.         07h raw mode for serial line only (v1.10+)
  7889. Return: CF set on error
  7890.        DH = error code (01h,08h) (see AX=01FFh)
  7891.     CF clear if successful
  7892. SeeAlso: AH=15h
  7893. --------N-6015-------------------------------
  7894. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
  7895.     AH = 15h
  7896.     BX = handle (optional for v1.10+)
  7897. Return: CF set on error
  7898.         DH = error code (01h) (see AX=01FFh)
  7899.     CF clear if successful
  7900.         AX = mode
  7901. SeeAlso: AH=14h
  7902. --------N-6016-------------------------------
  7903. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
  7904.     AH = 16h
  7905.     ES:DI -> multicast list
  7906.     CX = length of list in bytes
  7907. Return: CF set on error
  7908.         DH = error code (06h,09h,0Eh) (see AX=01FFh)
  7909.     CF clear if successful
  7910. SeeAlso: AH=17h
  7911. --------N-6017-------------------------------
  7912. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
  7913.     AH = 17h
  7914. Return: CF set on error
  7915.         DH = error code (06h,09h) (see AX=01FFh)
  7916.     CF clear if successful
  7917.         ES:DI -> multicast addresses (do not modify)
  7918.         CX = bytes of multicast addresses currently in use
  7919. SeeAlso: AH=16h
  7920. --------N-6018-------------------------------
  7921. INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
  7922.     AH = 18h
  7923.     BX = handle (optional for v1.10+)
  7924. Return: CF set on error
  7925.         DH = error code (01h) (see AX=01FFh)
  7926.     CF clear if successful
  7927.         DS:SI -> statistics (see below)
  7928.  
  7929. Format of statistics:
  7930. Offset    Size    Description
  7931.  00h    DWORD    packets in
  7932.  04h    DWORD    packets out
  7933.  08h    DWORD    bytes in
  7934.  0Ch    DWORD    bytes out
  7935.  10h    DWORD    errors in
  7936.  14h    DWORD    errors out
  7937.  18h    DWORD    packets dropped
  7938. --------N-6019-------------------------------
  7939. INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
  7940.     AH = 19h
  7941.     ES:DI -> address
  7942.     CX = length of address
  7943. Return: CF set on error
  7944.         DH = error code (0Dh,0Eh) (see AX=01FFh)
  7945.     CF clear if successful
  7946.         CX = length
  7947. --------N-601A-------------------------------
  7948. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
  7949.     AH = 1Ah
  7950.     DS:SI -> buffer
  7951.     CX = length of buffer
  7952. Return: CF set on error
  7953.         DH = error code (see AX=01FFh)
  7954.     CF clear if successful
  7955. SeeAlso: AH=1Ch
  7956. --------N-601B-------------------------------
  7957. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
  7958.     AH = 1Bh
  7959. Return: CF set on error
  7960.         DH = error code (see AX=01FFh)
  7961.     CF clear if successful
  7962. SeeAlso: AH=1Ch
  7963. --------N-601C-------------------------------
  7964. INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
  7965.     AH = 1Ch
  7966.     DS:SI -> buffer
  7967.     CX = length of buffer
  7968.     DX = timeout in clock ticks
  7969. Return: CF set on error
  7970.         DH = error code (see AX=01FFh)
  7971.     CF clear if successful
  7972.         CX = number of bytes transferred to buffer
  7973. SeeAlso: AH=1Ah,AH=1Bh
  7974. --------a-60AD-------------------------------
  7975. INT 60 - AccessDOS - API
  7976.     AH = ADh
  7977.     AL = function
  7978.         E1h ???
  7979.         Return: AX = ???
  7980.         E2h get configuration
  7981.         Return: BX:AX -> configuration data
  7982. Program: AccessDOS is a public domain TSR developed at The Trace Research and
  7983.       Development Center which provides extensions for keyboard, mouse,
  7984.       and sound access by the visually, hearing, or motor-control
  7985.       impaired.
  7986. Note:    INT 60 is the default vector; AccessDOS will use the first 0000h:0000h
  7987.       vector in the range 60h through 66h.
  7988. --------N-60E9-------------------------------
  7989. INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
  7990.     AH = E9h
  7991.     ???
  7992. Return: ???
  7993. --------!------------------------------------
  7994.